2012-03-22 34 views
4

我的工作并不依赖Rails中的任何东西,但我很难在没有rails env的情况下启动工作。我已经看到了这个帖子,但它并没有帮助(ruby resque without loading rails environment加载没有导轨环境的resque worker?

这是我目前的耙文件:

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的env和一切正常,但是这不是什么我想要。当运行rake resque:work我得到这个错误:

rake aborted! 
No such file to load -- application_controller 

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

回答

6

如果你只加了一个lib /任务/ resque.rake文件并没有修改过的Rakefile,你仍然可以加载你的Rails环境,当你调用耙复兴:工作。尝试一下本作的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 2012-03-26 15:47:27

-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_已加载。 OP询问了如何运行_without_rails。 – jwadsack 2015-04-03 18:16:24