我正在使用 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。有没有更清洁的方法来解决这个问题?
谢谢。