私は rufus スケジューラを使用して、展開システムからの cron ジョブを置き換え、展開時にアプリケーションが読み込まれたときにそれらのジョブを開始します。
これで、この scheduler.rb をアプリケーション ルート ディレクトリの config/initializers ディレクトリに配置しました。
scheduler.rb ファイルの内容は次のとおりです。
require 'rufus/scheduler'
require 'rubygems'
require 'rake'
load File.join(RAILS_ROOT,'lib','tasks','tempfile.rake')
temp_files_cleaning_scheduler = Rufus::Scheduler.start_new
temp_files_cleaning_scheduler.cron '*/1 * * * *' do
Rake::Task["tempfile:delete_all"].reenable
Rake::Task["tempfile:delete_all"].invoke
end
アプリケーション サーバーを起動すると、次のようなエラー メッセージが表示されます。
scheduler caught exception :
Don't know how to build task 'environment'
/home/karthik/.rvm/gems/jruby-1.5.2/gems/rake-0.8.7/lib/rake.rb:1728:in `[]'
/home/karthik/.rvm/gems/jruby-1.5.2/gems/rake-0.8.7/lib/rake.rb:605:in `invoke_prerequisites'
ここで、「環境」は、呼び出しているタスク「tempfile:delete_all」の依存タスクです。この :environment タスクは railties/lib/tasks/misc.rake で定義されています。
この misc.file へのパスをハードコーディングしてロードしたくありません。この問題を解決するためのよりクリーンな方法はありますか?
ありがとう。