2008-09-24 62 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应用程序由于某种原因而关闭,您的其他服务器仍然可以处理请求。它也可能会更快一点。

相关问题