2011-01-30 162 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和更新宝石...一切都很好。而且更简单。

二进制编码的奥秘!