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

Pin*_*yin 1 ruby ruby-on-rails rails-activejob

很高兴看到Rails 4.2附带Active Job作为后台作业的通用界面.但是我找不到如何在文档中启动一个worker.似乎该文档仍然不成熟(例如,正确版本的Sneakers仅在Rails中提及Gemfile),因此我不确定"正在运行的工作者"部分是否处于"活动作业"中或者仅在文档中未提及.

因此,对于Active Job,我是否仍需要手动启动作业观察程序线程,就像sidekiq在我的情况下一样rake sneakers:run?如果是这样,我应该在哪里放置这些命令以便rails server在开发环境中自动运行这些并行任务?

Mar*_*tin 6

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

使用resque的示例:

在Gemfile中:

gem 'resque'
Run Code Online (Sandbox Code Playgroud)

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

bin/resque work
Run Code Online (Sandbox Code Playgroud)

在使用sidekick,延迟工作或其他事情时,情况类似.

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

更好的解决方案是使用foreman gem来管理启动和停止流程.

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

web: bundle exec rails s
job: bundle exec resque work
Run Code Online (Sandbox Code Playgroud)

然后开始使用工头:

foreman start
Run Code Online (Sandbox Code Playgroud)

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