2011-07-07 50 views
0

我的延遲作業進程似乎隨機消失,我正在爲此進行長期修復,但同時,我認爲只需在需要時重新啓動它們就應該執行招。因爲我有當它的運行,我認爲需要延遲作業過程紅寶石批作業我就只用重新起動時的延遲工作流程: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") 

再次,這是行不通的。

我沒有做過很多系統調用,所以我確定它的基本東西。

我做:>>富=「系統(」 LS -la「)

,並列出了基本文件軌道目錄,因此它似乎是在正確的位置IM

回答

0

,前綴一個與環境變量的命令是不是一個正確的命令(我認爲這是一個bashism,但我可能是錯的),你可以做一些不同的事情:

  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 ..."

+0

1.工作,謝謝! – Joelio