2

很高兴看到 Rails 4.2 带有 Active Job 作为后台作业的通用接口。但是我在文档中找不到如何启动工人。似乎该文档仍然不成熟(例如,正确版本的 Sneakers 仅在 Rails' 中提及Gemfile),因此我不确定“正在运行的工人”部分是否不在 Active Job 中,或者只是在文档中未提及。

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

4

2 回答 2

7

ActiveJob 只是一个通用接口。您仍然需要后端 gem,并且您仍然需要与服务器分开启动它(这是一个单独的过程,这是目标)。

使用 resque 的示例:

在 Gemfile 中:

gem 'resque'

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

bin/resque work

使用 Sidekick、延迟工作或其他方式时,情况类似。

如果您想在单个命令中启动服务器和工作人员,您可以为其创建一个简短的 bash 脚本,但我建议不要这样做:拥有两个单独的控制台有助于观察每一侧发生的事情(网络应用程序和工作人员)。

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

您可以创建一个简单的 Procfile,其中包含要启动的进程:

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

然后就开始使用工头:

foreman start

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

于 2014-08-27T09:52:52.683 回答
1

您仍然必须运行作业线程观察程序。

于 2014-08-27T07:48:12.827 回答