1

我有一个使用 postgresql 数据库运行的 Rails 2.0.2 应用程序。机器将在 TCP 端口上接收数据。我已经编写了一个工作 ruby​​ 多线程 tcp 服务器来接收请求,但我需要这个代码与我的 Rails 应用程序一起运行。

所以我想我需要知道如何在 Rails 中跨越一个新进程,或者如何创建一个工作线程来运行我的线程化 tcp 服务器循环。我的 ruby​​ tcp 服务器可以访问 ActiveRecord,但这不是必需的(我总是可以创建一个 http 请求,将接收到的数据发布到原始 Rails 服务器)

4

3 回答 3

1

为什么要把事情复杂化?只需并排运行应用程序——您的 TCP 服务器和 Rails 应用程序。

要么将模型层(和 ActiveRecord)拉入你的 TCP 服务器(svn::externals 或 Piston 可能会很好地工作)并让两个应用程序之间的通信通过数据库发生,或者让 Rails 应用程序成为“主”和按照您的建议通过 HTTP 与它通信。

要将 Ruby 应用程序转换为 Windows 服务,请参阅项目中win32-service提供的 gem win32utilshttp ://rubyforge.org/projects/win32utils/

于 2008-09-25T00:24:18.707 回答
0

我需要 tcp 服务器作为 Windows 2003 服务器上的服务运行。我使用 mongrel_service 将 Rails 作为服务加载,但我不知道对纯 ruby​​ 代码执行相同操作的方法。如果我可以在计算机启动时启动我的 tcp 服务器,我会研究你的解决方案(不过这看起来还不错)。

于 2008-09-25T01:38:42.540 回答
0

不要让您的 Rails 应用程序对 TCP 服务器应用程序的状态负责。这真的不太适合这样做——而且可能没有理由让它们彼此完全同步。使用 monit 或其他东西来监视两个服务器进程。

如果不了解更多应用程序架构,就不可能确定,但​​我建议使用 ActiveRecord 和数据库在服务器之间进行通信,而不是 HTTP。这样,即使您的 Rails 应用程序由于某种原因关闭,您的其他服务器仍然可以处理请求。它也可能会更活泼一些。

于 2008-09-25T22:53:31.383 回答