我的延迟工作流程似乎随机消失了,我正在为此进行长期修复,但与此同时,我认为只需在需要时重启它们即可。由于我有一个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目录中的文件,所以看起来就像我在正确的位置。
答案 0 :(得分:0)
使用环境变量添加命令不是一个正确的命令(我认为这是一个基础,但我可能是错的)。你可以做一些不同的事情:
RAILS_ENV
已设置为生产(子进程继承其父级环境)。RAILS_ENV
设置为ENV
中的作品,以便它继承(ENV["RAILS_ENV"] = "production")
使用env
命令,该命令可以改变程序运行的环境
system "env RAILS_ENV=production ruby ..."
(或者您可以将命令包装在bash中,以便环境前缀有效... system 'bash -c "RAILS_ENV=production ruby ..."
)