2011-01-30 177 views
0

我可以使用delayed_job插件在一個共享服務器上使用守護進程延遲所有郵件...除了使用authlogic的郵件。 我不知道我在哪裏搜索,以及爲什麼它以其他方式工作。Authlogic&delayed_job&delayed_jobl_mailer&守護進程?

守護進程(關閉)的delayed_job & delayed_mail_mailer(上)authlogic(reset_password):發送 守護程序(上)的delayed_job & delayed_mail_mailer(上)other_model(send_mail):發送(on)的delayed_job & delayed_mail_mailer 守護程序(上)authlogic (reset_password):沒有!

哪裏可以找到問題?

應用程序/初始化/ delayed_mailer.rb:

class ActionMailer::Base 
    include Delayed::Mailer 
end 

配置/初始化/ delayed_job_config.rb:

Delayed::Job.destroy_failed_jobs = false 
silence_warnings do 
    Delayed::Job.const_set("MAX_ATTEMPTS", 3) 
    Delayed::Job.const_set("MAX_RUN_TIME", 5.minutes) 
end 

腳本/ dalayed_job:

#!/usr/bin/env ruby 
require 'rubygems' 
require 'daemons' 
dir = File.expand_path(File.join(File.dirname(__FILE__), '..')) 
daemon_options = { 
    :multiple => false, 
    :dir_mode => :normal, 
    :dir  => File.join(dir, 'tmp', 'pids'), 
    :backtrace => true, 
    :log_output => true 
} 

Daemons.run_proc('delayed_job', daemon_options) do 
    Dir.chdir dir 
    RAILS_ENV = ENV['RAILS_ENV'] || 'development' 
    require File.join('config', 'environment') 
    Delayed::Worker.new.start 
end 

模型/控制器/ passwoed_reset_controller .rb

def create 
    @user = User.find_by_email(params[:email]) 
    if @user 
     Notifier::deliver_password_reset_instructions(@user) 
     flash[:notice] = t('ResetInstructionSend') + t('CheckMail') 
     redirect_to root_url 
    else 
     flash[:notice] = t('NoUserMail') 
     render :action => :new 
    end 
    end 

控制器/ other_controller.rb

def update  
    @patent = Patent.find(params[:id]) 
    # update all 
    @patent.update_attributes(params[:patent]) 
     @user = @patent.user 
     @skill = @patent.skill 
     @current_user = current_user 
     Notifier::deliver_specialist_confirmation(@user, @skill, @current_user) 
    end 

模型/ notifier.rb

def password_reset_instructions(user) 
    recipients user.email 
    from  "Skill Forest" 
    subject  "Password Reset Instructions" 
    body   :edit_password_reset_url => edit_password_reset_url(user.perishable_token),:user => user 

def specialist_confirmation (user, skill, current_user) 
    recipients user.email 
    from  "Skill Forest" 
    subject "Bravo" 
    body  :user => user, :skill => skill, :current_user => current_user 
end 

更多的相關信息:Rails的2.3.5 & tobi delayed_job &守護進程1.0。 10 我在博士eamhost共享虛擬主機,但在我的電腦上的開發模式看起來是一樣的。

[編輯2]我會控制可以肯定的,但似乎這只是最大運行時間太短...

[編輯3]的其他辦法,我想:control if pid exist

+1

你的問題是什麼? – coreyward 2011-01-30 15:20:48

回答

0

只是要打開頁面...傳遞Rails 3和更新寶石...一切都很好。而且更簡單。

二進制編碼的奧祕!