2010-07-09 65 views
2

是否有可能使用多種語言的旁邊紅寶石。例如,我在Ruby on Rails中有我的應用程序代碼。我想計算的建議,我想用python的。所以基本上,Python代碼將得到的數據,並計算所有的東西,可能是從數據庫獲取數據,計算並更新tables.Is可以和你們認爲怎麼樣進階其/ disadv使用其他語言與紅寶石

感謝

+1

你爲什麼要Python和Ruby結合的原因嗎?我理解需要結合兩種互補語言(Ruby和C,Python和Java等)。 – 2010-07-09 19:59:02

+0

它只是不python,絕對是一種使用其他語言與紅寶石的方式。我提到python作爲例子:) – felix 2010-07-09 20:38:33

回答

4

如果您將工作卸載到外部進程,您可能希望將其設置爲某種web服務(可能是ajax),以便您擁有某種一致的界面。

否則,你總是可以在子shell通過紅寶石執行python腳本,使用標準輸入/輸出/ argv的,但是這會變得非常惡劣快。

+1

+1讓醜陋的快速。如果你使用'open4'或其他類似的包裝器來處理系統命令,你可能會獲得更好的里程數,但是它的管理一定很棘手。 – nfm 2010-07-09 22:29:24

1

我會(使用POPEN,系統等),或使用系統命令 這樣

system("python myscript.py") 
1

根據您的具體需求,您可以打電話到外部過程中,你可以設置另一個微型Web服務器或其他類似的東西,並讓Rails服務器通過HTTP與REST風格的API(或任何最適合您需要的)進行通信。

在你的榜樣,你有一個紅寶石前端網站,然後,對於紅寶石網站建立了推薦數據的數字運算蟒蛇後端服務。一個相當不錯的解決方案是讓ruby站點在需要數據更新時發送一個HTTP請求給python服務(使用信息有效載荷來確定它需要做些什麼),然後python後端服務可以收縮並更新表格,大概你的紅寶石前端會在下一次請求和顯示期間自動選取變化。

0

一個簡單,快捷的「否」如果你有Python腳本,你想從裏面軌道執行它們,骯髒的解決方案是這樣的:

%x[shell commands or python path/of/pythonscript.py #{ruby variables to pass on the script}]

``shell命令或python路徑/ of/pythonscript.py#{ruby變量傳遞腳本} \(在開頭和結尾都有`符號)。

把上面的控制器內,它將執行。

出於某種原因,在軌道內的紅寶石,系統和exec命令並沒有爲我工作(EXEC墜毀我的應用程序和系統沒有做任何事情)。