2008-09-24 68 views
1

我有一個運行PostgreSQL數據庫的Rails 2.0.2應用程序。機器將在TCP端口上接收數據。我已經編寫了一個可運行的ruby多線程tcp服務器來接收請求,但我需要此代碼與我的Rails應用程序一起運行。需要運行除Rails應用程序之外的TCP服務器

所以我想我需要知道如何跨越Rails中的新進程,或者如何創建一個工作線程來運行我的線程化tcp服務器循環。我的ruby tcp服務器可以訪問ActiveRecord,但沒有必要(我總是可以創建一個http請求,將接收到的數據發佈到原始的Rails服務器)

回答

1

爲什麼複雜的東西?只需並行運行應用程序 - 您的TCP服務器和Rails應用程序。

將模型層(和ActiveRecord)拉到你的TCP服務器(svn :: externals或Piston可能對此很好),並讓兩個應用程序之間的通信通過數據庫發生,或讓Rails應用程序成爲「主人」並按照你的建議通過HTTP進行溝通。

要打開一個Ruby應用程序到Windows服務,請參閱可從win32utils項目win32-service寶石:http://rubyforge.org/projects/win32utils/

0

我需要的TCP服務器爲Windows 2003服務器上的服務運行。我使用mongrel_service作爲服務加載Rails,並且我不知道如何爲純Ruby代碼執行相同的操作。如果我可以在計算機啓動時啓動我的tcp服務器,我會研究你的解決方案(儘管如此,這看起來相當不錯)。

+0

通常,編輯原始問題比發佈後續答案更好。 – Nate 2008-09-25 22:54:12

0

不要讓你的Rails應用程序負責TCP服務器應用程序的狀態。它的確不太適合這樣做 - 而且他們可能沒有理由需要彼此絕對鎖定地開始。使用監視或某事來監視兩個服務器進程。

不知道更多的應用程序體系結構是不可能的,但我建議使用ActiveRecord和數據庫在服務器之間進行通信而不是HTTP。這樣,即使您的Rails應用程序由於某種原因而關閉,您的其他服務器仍然可以處理請求。它也可能會更快一點。

相關問題