Rails アプリを Apache/Passenger で実行しています。バックグラウンドで実行され、電子メールで通知を送信する rufus cron ジョブがあります。WEBrick サーバーで開発中のアプリを実行しているとき、メールは送信されるはずのように送信されます。Apache/Passenger で本番環境でアプリを起動すると、メールが送信されません。作業を行うクラスは config/initializers/task_scheduler.rb にあります
require 'rubygems'
require 'rufus/scheduler'
Rails.logger.info "Starting the scheduler"
## to start scheduler
scheduler = Rufus::Scheduler.start_new
## Every day at 6 AM, send email for projects that haven't been updated in 14 days
Rails.logger.info "Adding the Stale Email job to the scheduler"
scheduler.cron("* * * * *") do
Rails.logger.info "Running every minute"
projects = Project.stale
projects.each do |project|
Rails.logger.info "Inside the loop"
days = (Time.now - project.updated_at).to_i / 1.day
ProjectMailer.stale(Jetway::Application.config.stale_email, project, days).deliver
Rails.logger.info "Sent stale email for project #{project.name}; it's #{days} days stale."
end
end
現在、毎分実行されているため、デバッグできます。これが私のログファイル出力です。
Started GET "/assets/availity_spinner.gif" for 99.44.242.76 at 2012-06-23 21:46:28 -0400
Served asset /availity_spinner.gif - 304 Not Modified (0ms)
Starting the scheduler
Adding the Stale Email job to the scheduler
ログ ステートメントと、コードのどこまで進んだかを確認できます。Passenger が特に cron ジョブの周りでスレッドを強制終了することをブログで読みました。私は立ち往生しており、この問題を解決するための方向性を見つけようとしています。私を正しい方向に向けてください。