Какой код в моем файле inizializer может работать с задержанными работниками? - PullRequest
1 голос
/ 14 марта 2012

Я использую Mac OS под управлением Snow Leopard 10.6.8, Ruby on Rails 3.2.2 и гем DelayedJob.Я хотел бы запустить некоторые «командные строки» / «задачи» из инициализатора, чтобы запустить задержанных рабочих.

Чтобы сделать это в моем файле config/initializers/delayed_job.rb, я пытаюсь указать следующее:

if Rails.env.development?
  system 'rake jobs:work'
elsif Rails.env.production?
  system 'RAILS_ENV=production script/delayed_job stop'
  system 'RAILS_ENV=production script/delayed_job -n 2 start'
end

Однако приведенный выше код запускает множество ruby процессов, которые быстро замедляют работу моей машины, поэтому я должен перезапустить это.На удаленной машине работает Linux Ubuntu 10.4.

Как правильно указать этот код для запуска задержанных работников?

В любом случае, я думаючто, поскольку на локальном и удаленном компьютере работают две разные операционные системы, «командные строки» / «задачи» также должны быть разными ...

1 Ответ

2 голосов
/ 14 марта 2012

Вместо использования инициализатора это следует делать во время развертывания, поскольку ваш инициализатор запускается для каждого экземпляра вашего приложения, которое создается.

Поскольку вы используете capistrano, я обычно обращаюсь с этим так:

в config/deploy.rb:

require 'delayed/recipes'

after 'deploy:symlink', 'delayed_job:restart'

Поскольку вы хотите порождать 2 рабочих, это можно сделать, установив delayed_job_args:

require 'delayed/recipes'
set :delayed_job_args, "-n 2"
after 'deploy:symlink', 'delayed_job:restart'
...