2012-03-22 6 views
4

Работы resque, которые я не зависеть от чего-либо в Rails, но мне сложно начинать работу без рельсов env. Я видел этот пост, но это не помогло (ruby resque without loading rails environment)Загрузите работника resque без рельсов?

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

require "resque/tasks" 

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

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

#task "resque:setup" => :environment 

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

rake aborted! 
No such file to load -- application_controller 

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

ответ

6

Если вы только добавили Библиотека/задач/файл resque.rake и не модифицировали ваш Rakefile, вы все еще будете нагружать свою среду Rails, когда вы звоните rake resque: работа. Попробуйте это для 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

Ах, что сделал трюк. Спасибо за помощь! – Brian

-1

Я передал ссылку here Он работал отлично для меня:

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

$> QUEUE=* rake environment resque:work 

уборщик решение было определить рейк задачу:

task "resque:setup" => :environment do 
    ENV['QUEUE'] ||= '*' 
    #for redistogo on heroku http://stackoverflow.com/questions/2611747/rails-resque-workers-fail-with-pgerror-server-closed-the-connection-unexpectedl 
    Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection } 
end 

и теперь

rake resque:work 

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

Спасибо.

+1

Это гарантирует загрузку среды Rails _is_. ОП попросил запустить его _without_ rails. – jwadsack

Смежные вопросы