2016-08-25 89 views
1

我正在使用Rails應用程序,現在需要在應用程序主頁上單擊按鈕時運行單個Python腳本。我試圖找出一種方法讓rails運行這個腳本,並且迄今爲止我的兩次嘗試都失敗了。如何從Rails應用程序運行Python腳本?

我的第一次嘗試是使用exec(..)命令來運行「python script.py」,但是當我這樣做的時候它似乎運行該文件但終止了rails服務器,所以我需要手動每次重新啓動它。

我的第二次嘗試是安裝gem「RubyPython」,並從那裏嘗試,但我一直在虧損,一旦我有它運行..我找不到任何人使用它運行的例子或加載一個python腳本。

任何幫助,這將不勝感激。

回答

1

以下是通過運行給定的外部命令來執行shell腳本

`python pythonscript.py` 

system("python pythonscript.py") 

exec(" python pythonscript.py") 

EXEC替換當前的進程的方式。
返回無,當前進程被替換,永遠不會繼續。

2

exec用新的替換當前進程。你想把它作爲一個子進程運行。有關概覽,請參閱When to use each method of launching a subprocess in Ruby。我建議使用反引號進行簡單處理,或者在需要更多控制時使用popen/popen3。或者,您可以使用Ruby-Python bridge gem rubypython從Ruby本身執行Python(特別是如果您將重複執行相同的Python函數)。爲此,您需要將腳本創建爲適當的Python模塊,在Rails應用程序啓動時啓動橋接,然後使用RubyPython.import將您的模塊引用到Ruby代碼中。 gem的GitHub頁面上的示例非常簡單,應該足以滿足您的需求。