Я использую Ruby on Rails 3.0.9 и пытаюсь установить гем delay_job .Все работает, если после перезагрузки сервера Apache2 я запускаю в Terminal \ Console следующие команды:
RAILS_ENV=development script/delayed_job stop
RAILS_ENV=development script/delayed_job -n 2 start
Однако, поскольку я всегда хочу запускать рабочие при запуске приложения, в моем config/initializers/delayed_job.rb
я добавляюследующий код (который обрабатывает как режим разработки, так и режим производства):
if Rails.env.development?
system 'RAILS_ENV=development script/delayed_job stop'
system 'RAILS_ENV=development script/delayed_job -n 2 start'
elsif Rails.env.production?
system 'RAILS_ENV=production script/delayed_job stop'
system 'RAILS_ENV=production script/delayed_job -n 2 start'
end
Однако, с помощью приведенного выше кода и после перезагрузки сервера Apache2, гем DJ не работает должным образом.То есть, он не обрабатывает задания, как это происходит, когда я запускаю вышеуказанные командные строки в Terminal \ Console.
Как я могу заставить DJ работать правильно?В чем проблема?
PS: Я хотел бы сделать это для автоматизации процессов.
Похоже, что приведенный выше код в файле config/initializers/delayed_job.rb
не't' создавать "файлы" pids ", связанные с DJ, в каталоге RAILS_ROOT/tmp/pids
.Они создаются только путем запуска указанных командных строк вручную.Почему это происходит?
ОБНОВЛЕНИЕ для @ Девин М
Мой config/initializers/delayed_job.rb
содержит:
# Options
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.sleep_delay = 2
Delayed::Worker.max_attempts = 5
Delayed::Worker.max_run_time = 1.hour
Delayed::Worker.delay_jobs = !Rails.env.test?
if Rails.env.development?
system "RAILS_ENV=development #{Rails.root.join('script','delayed_job')} stop"
system "RAILS_ENV=development #{Rails.root.join('script','delayed_job')} -n 2 start"
elsif Rails.env.production?
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} stop"
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} -n 2 start"
end