【发布时间】:2011-06-18 03:16:02
【问题描述】:
[edit] 我可以在带有守护进程的共享服务器上使用delayed_job 插件延迟所有邮件……除了使用authlogic 的邮件。 我不知道我必须在哪里搜索,以及为什么它以其他方式工作。
守护进程(关闭)delayed_job 和delayed_mail_mailer(打开)authlogic(reset_password):发送 守护进程(打开)delayed_job 和delayed_mail_mailer(打开)other_model(send_mail):发送 守护进程(开启)delayed_job 和delayed_mail_mailer(开启)authlogic(reset_password):什么都没有!
在哪里搜索问题??
app/initializer/delayed_mailer.rb:
class ActionMailer::Base
include Delayed::Mailer
end
config/initializers/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
models/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 & daemons 1.0.10 我在 Dreamhost 共享虚拟主机上,但在我的计算机上的开发模式下看起来相同。
[编辑 2] 我会控制,但似乎只是最大运行时间太短了……
[编辑 3] 我正在尝试的另一种方式:control if pid exist
【问题讨论】:
-
我可以在带有守护进程的共享服务器上使用delayed_job插件延迟所有邮件……除了使用authlogic的邮件。我不知道我必须在哪里搜索,以及为什么它以其他方式工作。
-
您是否尝试将
Delayed::Mailer明确包含在邮件中,而不是将其包含在ActionMailer::Base?中 -
感谢您的回复。这是我的第一个选择,但行为相同。
标签: ruby-on-rails delayed-job authlogic dreamhost ruby-daemons