2012-11-27 131 views
1

我正在運行Rails 2.3.5。運行rake ts:從rake任務內的索引

在我的項目我在LIB /任務以下rake任務(test_task.rake):

13 14 * * * cd /sites/project/app && /sites/ruby/bin/rake RAILS_ENV=staging test_task 

desc 'test_synchro_task' 
task :test_synchro_task => :environment do 
    # A bunch of things that are properly executed (basically I am inserting 
    # in the database)... 
    # ... 
    # and once the above is done, I want the following to be executed, 
    # the sphinx index to be rebuild, but it is NOT : 
    system("cd /sites/project/app") 
    system("RAILS_ENV='staging' rake ts:index") 
end 

我通過包含以下項的crontab觸發任務的執行

除了任務中的2個系統行之外,哪些id正確調用和執行。

請注意,當我把在我的項目腳本目錄紅寶石test.rb文件的2條系統線路,並使用Ruby的命令運行它:

ruby test.rb 

的2個系統命令正確執行並且索引被正確地重建。

在我耙的任務,我試圖通過替換那些2線系統:

@cmd="cd /sites/project/app; RAILS_ENV='staging' rake ts:index" 
`#{@cmd}` 

但耙TS:仍然沒有執行索引。

任何想法爲什麼?

非常感謝。

伊夫

+0

只是爲了澄清。我的帖子中有一個錯字。描述和任務名稱確實可以,即:test_task和test_synchro_task。 – user1857699

回答

0

問題解決:

1-在Ruby腳本,我發現,$?退出狀態爲127,這是 「未找到命令」。

2-這暗示了我在cron環境中發生的PATH問題。

3-發現該文章:http://dewful.com/?p=157標題爲「Ruby - Cron Not Working For Ruby Script」。

4-在crontab中添加了PATH,一切正常。

伊夫