0

我正在使用rufus調度程序從部署系統中替換cron作業,並在應用程序加載部署時啓動這些作業。Rails依賴於:初始化文件中的環境任務調用rake任務

現在我將這個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」的依賴任務。而這個:環境任務在railties/lib/tasks/misc.rake中定義。

我不想通過硬編碼它的路徑加載這個misc.file。 有沒有更簡單的方法來解決這個問題?

謝謝。

+0

我已經使用rufus,沒有問題,我總是有問題。希望我能幫上忙。 – s84 2011-02-05 06:54:28

+0

去接受一個mofukin的答案,有人會幫助你' – s84 2011-02-05 06:56:26

回答

1

這聽起來像你需要更多的定義,在Rakefiles沒有得到加載,可能是因爲「lib/tasks/tempfile.rake」沒有任何require語句。

我想在命令行工作的,如果是這樣,你有兩個選擇:

  1. 裝入應用程序的主Rake文件,裏面有所有的格蘭必要包括:

    load File.join(RAILS_ROOT,'lib','tasks','tempfile.rake')

  2. 只要把它叫做好像從控制檯那樣:

    system('rake tempfile:delete_all')

希望有幫助!