Rails活动作业使用,或使用Rails自动运行观察程序线程

时间:2014-08-27 02:18:20

标签: ruby-on-rails ruby rails-activejob

很高兴看到Rails 4.2附带Active Job作为后台作业的通用界面。但我无法找到如何在文档中启动工作人员。似乎该文档仍然不成熟(例如,正确版本的Sneakers仅在Rails' Gemfile中引用),因此我不确定"正在运行的工作人员" part不在Active Job中,或者只是在docs中没有提到。

因此,对于Active Job,我是否仍需要手动启动作业监视器线程,例如sidekiq或我的情况rake sneakers:run?如果是这样,我应该在哪里放置这些命令让rails server在开发环境中自动运行这些并行任务?

2 个答案:

答案 0 :(得分:6)

ActiveJob只是一个常见的界面。你仍然需要后端gem,你仍然需要从你的服务器单独启动它(这是一个独立的过程,这是目标)。

使用resque的示例:

在Gemfile中:

gem 'resque'

在终端中,启动一名工人:

bin/resque work

使用sidekick,延迟工作或其他事情的情况类似。

如果您想启动服务器&单个命令中的worker,你可以为它创建一个简短的bash脚本,但我建议不要这样做:有两个独立的控制台有助于观察每一方面发生的事情(web app& worker)。

更好的解决方案是使用foreman gem来管理起始&停止你的过程。

您可以使用要启动的进程创建一个简单的Procfile:

web: bundle exec rails s
job: bundle exec resque work

然后开始使用工头:

foreman start

默认情况下,foreman会在控制台中交错进程的日志,但这可以配置。

答案 1 :(得分:1)

您仍然需要运行作业线程监视器。