从rake任务中运行rake ts:index

时间:2012-11-27 20:30:25

标签: command rake system task sphinx

我正在运行Rails 2.3.5。

在我的项目中,我在lib / tasks中有以下rake任务(test_task.rake):

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触发任务的执行:

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

除了任务中的2个系统行之外,哪个id正确调用并执行。

请注意,当我将这两个系统行放在项目脚本目录中的ruby test.rb文件中时,使用ruby命令手动运行它:

ruby test.rb

正确执行了这两个系统命令,并正确地重建了索引。

在我的rake任务中,我尝试用以下方法替换这两个系统:

%x["cd /sites/project/app"]
%x["RAILS_ENV='staging' rake ts:index"]

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

但是rake ts:index仍未执行。

知道为什么吗?

非常感谢。

伊夫

1 个答案:

答案 0 :(得分:0)

问题已解决:

1-在ruby脚本中,我发现$ ?. exitstatus是127,这是“找不到命令”。

2-这暗示我在cron的背景下发生了一个PATH问题。

3-发现帖子:http://dewful.com/?p=157标题为“Ruby - Cron不适用于Ruby脚本”。

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

Yves