1

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 项目的链接,但不幸的是我没有足够的“声誉”

4

3 回答 3

0

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

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

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

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

高温高压

于 2012-05-19T01:10:54.720 回答
0

我认为您需要Guard之类的东西来监视文件系统上的更改并在更改发生时执行操作。

至于上帝,你一定要调查一下。它将使您所依赖的启动/停止过程变得更加容易。我们使用了一段时间的 Bluepill,但是有很多错误,我们放弃了它并转向上帝,恕我直言,在大多数情况下,使用它更愉快。

于 2012-05-19T01:28:13.797 回答
0

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

startDaemon.rb

然后放置它:

config/initializers/ 

?

于 2012-05-19T09:51:31.743 回答