繁体   English   中英

如何在Rails中实现自动启动和退出守护程序

[英]How to implement auto starting and exiting daemons in rails

Rails社区为我的问题创建了一个可能的解决方案,这让我有些不知所措。 因此,也许任何人都可以帮助我找出最佳解决方案。

我想做的是编写一个行为类似于“ Dropbox”的Rails应用程序。 一方面,它应该是一个Web界面,在这里我可以将文件上传和下载到Web服务器。 这与我的数据库以及所有其他东西交互。 另一方面,我可以通过SSH访问该服务器,并且可以手动将文件放置在该服务器上。 现在,我希望此文件系统操作可以触发我的Rails应用程序执行通过Web界面创建文件时的操作。

所以我以某种方式写了一个守护进程,对吗? 有很多解决方案,例如
daemons.rubyforge.org/
github.com/mirasrael/daemons-rails
github.com/costan/daemonz
github.com/kennethkalmer/daemon-kit

我想拥有的另一个功能是,在启动或退出我的Rails应用程序响应时,Rails应用程序会自动生成并停止守护进程。 因此,“ daemonz”似乎是最佳解决方案。 但是当我进一步搜寻时,我发现
github.com/FooBarWidget/daemon_controller/
这似乎是更多的“高科技”,并且在我与乘客一起部署时已经使用。 但是我不知道它在退出Rails时是否杀死了我的守护进程。 我想情况并非如此,所以我想知道如何在我的应用程序中实现这一点。

对我来说,实现对文件系统更改做出反应的“事物”的方法似乎很简单。 我会用
github.com/guard/listen/
(另一个选择是:github.com/ttilley/fssm)
但是,我第一次真正面对该协议时就不了解,这是,如果它产生了一个我可以与之通信的服务器,或者我必须处理哪种对象。

我想实现的最后一件事是一种工作队列,以便将监听文件系统更改与我的rails应用程序的操作分开。 但是有太多解决方案,我完全不知所措,只能选择一种:
github.com/tobi/delayed_job/
github.com/defunkt/resque
http://backgroundrb.rubyforge.org/

是什么
http://godrb.com/
所有关于? 那对我有什么帮助?

有没有人暗示如何解决这个问题? 非常感谢!

一月

PS:我想发布指向所有github项目的链接,但不幸的是我没有足够的“声誉”

我肯定会考虑创建一个监视相关目录的进程(守护程序)。 然后,您的Rails应用程序可以直接将文件放入其中,而无需了解后端的任何知识,它也可以与SSH一起使用。

您的守护程序可以加载Rails环境并与数据库进行通信。 我会把他们之间的所有沟通都留在那个水平上。

至于使用Rails应用程序启动/停止...确定吗? 我使用上帝(红宝石宝石)来启动/监视进程。 它将也为您“守护”您的Ruby应用程序。 如果愿意,您实际上可以告诉上帝停止您的目录监视进程,然后在Rails停止时退出。 您可以从Rails初始化程序中解雇上帝。

但是,如果您可能发现自己在不运行Rails时使用SSH或其他方式将文件放入该目录,则可以考虑将脚本放入/etc/init.d以在服务器启动时自动启动。

高温超导

我认为您想要像Guard这样的工具来监视文件系统上的更改并在更改发生时执行操作。

至于上帝,您绝对应该研究一下。 这将使您所依赖的启动/停止过程变得更加容易。 我们使用Bluepill已有一段时间,但是有很多错误,我们抛弃了它并移交给了上帝,在大多数情况下,恕我直言,与IMHO合作更愉快。

您是否尝试过创建脚本文件,例如:

startDaemon.rb

然后将其放置:

config/initializers/ 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM