ruby系统调用重启延迟的作业失败

时间:2011-07-07 14:57:24

标签: ruby-on-rails ruby delayed-job system-calls

我的延迟工作流程似乎随机消失了,我正在为此进行长期修复,但与此同时,我认为只需在需要时重启它们即可。由于我有一个ruby批处理作业,在运行时需要延迟作业处理,我想我只会在开始时使用以下命令重新启动延迟作业进程:

system_call_result = system( "RAILS_ENV=production ruby script/delayed_job -n7 restart" )

这不起作用,调用返回false并且什么都不做。所以我也试过了:

system_call_result1 = system( "RAILS_ENV=production ruby script/delayed_job stop" )
system_call_result2 = system( "RAILS_ENV=production ruby script/delayed_job -n7 start" )

再次这不起作用。

我没有做过很多系统调用,所以我确定它的基本内容。

我做了:>> foo =“system(”ls -la“)

它列出了base rails目录中的文件,所以看起来就像我在正确的位置。

1 个答案:

答案 0 :(得分:0)

使用环境变量添加命令不是一个正确的命令(我认为这是一个基础,但我可能是错的)。你可以做一些不同的事情:

  1. 没有,如果RAILS_ENV已设置为生产(子进程继承其父级环境)。
  2. RAILS_ENV设置为ENV中的作品,以便它继承(ENV["RAILS_ENV"] = "production")
  3. 使用env命令,该命令可以改变程序运行的环境

     system "env RAILS_ENV=production ruby ..."
    

    (或者您可以将命令包装在bash中,以便环境前缀有效... system 'bash -c "RAILS_ENV=production ruby ..."