除Rails应用外,还需要运行TCP服务器
我有一个运行Postgresql db的Rails 2.0.2应用程序。机器将在TCP端口上接收数据。我已经编码了一个工作的ruby多线程tcp服务器来接收请求,但是我需要此代码与我的Rails应用程序一起运行。
所以我想我需要知道如何在Rails内部扩展一个新进程,或者如何创建一个将运行我的线程化tcp服务器循环的工作线程。我的ruby tcp服务器可以访问ActiveRecord,但不是必须的(我可以随时创建一个http请求,将接收到的数据发布到原始的Rails服务器中)
解决方案
为什么使事情复杂化?只需并排运行应用程序-TCP服务器和Rails应用程序。
将模型层(和ActiveRecord)拉入TCP服务器(svn :: externals或者Piston可能对此很有效),然后让两个应用程序之间的通信通过数据库进行,或者让Rails应用程序成为"主",根据建议通过HTTP与之通信。
要将Ruby应用程序转换为Windows服务,请参见win32utils项目中的win32-service gem:http://rubyforge.org/projects/win32utils/
我需要tcp服务器作为Windows 2003服务器上的服务运行。我使用mongrel_service将Rails作为服务加载,我不知道对纯ruby代码做同样的方法。如果我可以在计算机启动时启动我的tcp服务器,我将调查解决方案(尽管看起来不错)。
不要让Rails应用负责TCP服务器应用的状态。确实不是很适合这样做-并且可能没有理由彼此之间必须绝对锁定地启动它们。使用监视或者其他方式监视两个服务器进程。
在不了解应用程序体系结构的情况下无法肯定地说,但我建议我们使用ActiveRecord和数据库在服务器之间进行通信,而不是使用HTTP。这样,即使Rails应用由于某种原因关闭了,其他服务器仍然可以处理请求。它也可能会变得更简单一些。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。