很高兴看到Rails 4.2附带Active Job作为后台作业的通用界面。但我无法找到如何在文档中启动工作人员。似乎该文档仍然不成熟(例如,正确版本的Sneakers仅在Rails' Gemfile
中引用),因此我不确定"正在运行的工作人员" part不在Active Job中,或者只是在docs中没有提到。
因此,对于Active Job,我是否仍需要手动启动作业监视器线程,例如sidekiq
或我的情况rake sneakers:run
?如果是这样,我应该在哪里放置这些命令让rails server
在开发环境中自动运行这些并行任务?
答案 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)
您仍然需要运行作业线程监视器。