Pinyin
Pinyin

Reputation: 576

Rails Active Job usage , or running watcher thread automatically with Rails

It's nice to see Rails 4.2 come with Active Job as a common interface for background jobs. But I can't find how to start a worker in the document. It seems that the document is still immature (e.g. the right version of Sneakers is only referred to in Rails' Gemfile), so I'm not sure if the "running workers" part is not in Active Job or just not mentioned in docs.

So with Active Job, do I still need to manually start the job watcher threads like sidekiq or in my case, rake sneakers:run? If so, where should I put these commands to let rails server run these parallel tasks automatically in a develop environment?

Upvotes: 2

Views: 2061

Answers (2)

Martin
Martin

Reputation: 7714

ActiveJob is just a common interface. You still need the backend gem, and you still need to launch it separately from your server (it is a separated process, which is the objective).

Sample using resque:

In the Gemfile:

gem 'resque'

In the terminal, launching a worker:

bin/resque work

The case is similary when using sidekick, delayed job or something else.

If you want to launch the server & worker in a single command, you can create a short bash script for it, but I would advise not doing so: having two separated console helps to watch what is happening on each side (web app & worker).

A better solution would be to use the foreman gem to manage starting & stopping your process.

You can create a simple Procfile with the processes to start:

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

And then just start both using foreman:

foreman start

By default, foreman will interleave the logs of the process in the console, but this can be configured.

Upvotes: 7

Seuros
Seuros

Reputation: 131

You still have to run the job thread watcher.

Upvotes: 1

Related Questions