грабли фоновая задача не запускается - PullRequest
1 голос
/ 04 сентября 2010

Я хочу использовать фоновое задание граблей в рельсах, как это

system("cd #{Rails.root} && RAILS_ENV=#{Rails.env} rake abc:def --trace 2>&1 >> #{Rails.root}/log/rake.log &")

Это нормально в среде разработки, но не будет работать в производственном режиме.

Я использовал logger, чтобы проверить, сгенерирована ли командная строка нормально или нет, но, похоже, все хорошо в рабочей среде:

cd /home/username/rails_staging/Abc/releases/20100904034630 && RAILS_ENV=production rake abc:def --trace 2>&1 >> /home/username/rails_staging/Abc/releases/20100904034630/log/rake.log &

У кого-нибудь есть идеи, почему это не может работать в производственном режиме?

Спасибо

1 Ответ

0 голосов
/ 23 ноября 2011

Это моя тестовая установка для репликации вашей проблемы.

# lib/tasks/whatever.rake
namespace :abc do
  task :def do
    puts "DEF ran in #{Rails.env} mode in the directory #{Rails.root}."
  end
end

$ rake abc:def
DEF ran in development mode in the directory /tmp/boluapp

$ RAILS_ENV=production rake abc:def
DEF ran in production mode in the directory /tmp/bobluapp.

Он запустится.Это просто не идет в журнал.Вы можете увидеть его здесь в rails console, запущенном в производственном режиме.

>> system("cd #{Rails.root} && RAILS_ENV=#{Rails.env} rake abc:def --trace 2>&1 /tmp/rake.log")
** Invoke abc:def (first_time)
** Execute abc:def
DEF ran in production mode in the directory /tmp/boluapp.

Rake отключает ведение журнала в производственном режиме.Поэтому создайте новый.

# lib/tasks/whatever.rb
namespace :abc do
  task :def do
    logger = Logger.new("#{Rails.root}/log/rake.log")
    logger.level = Logger::INFO
    logger.info "DEF ran in #{Rails.env} mode in the directory #{Rails.root}."
  end
end

$ RAILS_ENV=production rake abc:def
$ cat log/rake.log
# Logfile created on 2011-11-23 00:00:00 -0500 by logger.rb/31641
DEF ran in production mode in the directory /tmp/boluapp.

В качестве дополнительной информации о бесплатных советах, которые вам, вероятно, не нужны, это плохой способ запуска фоновых заданий.Посмотрите на камень delayed_job.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...