2011-07-07 80 views
1

在C++上,我對Ruby on Rails通信有一個相當奇怪的問題。我試圖在我的C++程序中發生某些事件時更新Rails服務器中的視圖,這兩個程序都在同一臺機器上。是否可以從C++程序調用RoR服務器上的控制器中的方法?如果是這樣,怎麼樣?從C++程序調用Rails方法

回答

0
  • 如果這些更新是高頻率的,考慮繞過rails並直接從您的C++應用程序更新您的數據庫。
  • 如果更新不頻繁,您可以考慮使用C HTTP庫(如curl)通過HTTP堆棧來關閉對rails應用程序的更新;您可能想要限制對這些更新控制器方法的訪問。
  • 如果更新非常少見,它可能只是一個足夠的解決方案,可以從您的C++應用程序運行rake任務。

雖然在技術上可以通過一些調用由C++紅寶石一樣SWIG,它不覺得麻煩的解決方案,這可能是難以維護和調試。

+0

更新可能有點高頻率,並且發送的數據不需要保存在數據庫中,只需要在視圖中顯示即可。 Curl似乎是一個有趣的想法...我已經找到了通過Curl在C++中發佈的資源,但是沒有通過Ruby/Rails中的Curl獲取數據......有什麼想法嗎? – Brandon

+0

如果數據未存儲在數據庫中,則需要在某個地方居住。也許你可以將數據存儲在memcached中,用C++編寫,並在渲染視圖時從rails中的memcached中讀取它,這實際上取決於你的環境中有哪些可用的服務。 –

+0

我其實並沒有這樣做;通過展示視圖,你的意思是什麼?該視圖將顯示給您的C++程序。它是否保存了稍後使用請求的HTML結果?還是你想讓使用Rails站點的人看到C++程序通過發送請求生成的頁面? – 2011-07-19 05:10:35

0

您可以讓Rails應用程序通過XML-RPC公開其控制器方法 - 這裏有一個library。然後,使用C++ XML-RPC庫來調用它。

+0

傑森關於限制訪問的評論當然也適用於這裏。 – 2011-07-07 05:39:34