Загрузить Resque работника без рельсов окружающей среды? - PullRequest
4 голосов
/ 22 марта 2012

Работы по восстановлению, которые у меня есть, не зависят ни от чего в Rails, но мне трудно начинать рабочих без enils rails. Я видел этот пост, но это не помогло ( ruby ​​resque без загрузки rails environment )

Вот мой текущий файл рейка:

require "resque/tasks"

task "resque:setup" do
  root_path = "#{File.dirname(__FILE__)}/../.."

  require "#{root_path}/app/workers/myworker.rb"
end

#task "resque:setup" => :environment

Закомментированная задача загрузит env Rails, и все будет работать, но это не то, что я хочу. При запуске rake resque:work я получаю эту ошибку:

rake aborted!
No such file to load -- application_controller

Tasks: TOP => resque:work => resque:preload

Ответы [ 2 ]

6 голосов
/ 26 марта 2012

Если вы только добавили файл lib / tasks / resque.rake и не изменили свой Rakefile, вы все равно будете загружать свою среду Rails, когда будете вызывать rake resque: work.Попробуйте это для Rakefile:

unless ENV['RESQUE_WORKER'] == 'true'
  require File.expand_path('../config/application', __FILE__)
  My::Application.load_tasks 
else
  ROOT_PATH = File.expand_path("..", __FILE__)
  load File.join(ROOT_PATH, 'lib/tasks/resque.rake')
end

И затем для вашего файла resque.rake:

require "resque/tasks"

task "resque:setup" do
  raise "Please set your RESQUE_WORKER variable to true" unless ENV['RESQUE_WORKER'] == "true"
  root_path = "#{File.dirname(__FILE__)}/../.."
  require "#{root_path}/app/workers/myworker.rb"
end

Затем вызовите rake resque:work RESQUE_WORKER=true

0 голосов
/ 23 августа 2014

Я сослался на ссылку здесь Это прекрасно сработало для меня:

Эта ошибка была устранена, запустив

$> QUEUE=* rake environment resque:work

Более чистое решение - определить граблиЗадача:

task "resque:setup" => :environment do
  ENV['QUEUE'] ||= '*'
  #for redistogo on heroku /1513914/rabotniki-rails-resque-zavershayt-rabotu-s-pgerror-server-neozhidanno-zakryl-soedinenie
  Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection }
end

и теперь

rake resque:work

Отлично сработало

Спасибо.

...