繁体   English   中英

如何配置ActiveJob以使用Resque?

[英]How do I configure ActiveJob to use Resque?

我在Rails 4.2和Resque中使用ActiveJob遇到了一些困难。

我已经安装了redis,并向我的Gemfile添加了resque和resque-scheduler。

我创建了一个测试作业-它只是生成的文件

rails g job test

但我不断收到有关ActiveJob的错误,但未定义

NameError: uninitialized constant ActiveJob

像这样切换适配器时还是缺少方法

config.active_job.queue_adapter = :resque

我得到这个错误

/usr/local/lib/ruby/gems/2.1.0/gems/railties-4.2.0.beta1/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `active_job' for #<Rails::Application::Configuration:0x007f97ba98a5b8> (NoMethodError)

我什至看过源代码,但我不知道。 它只是叫超级。

https://github.com/rails/rails/blob/master/railties/lib/rails/railtie/configuration.rb#L95

我缺少什么? 为什么队列适配器不起作用? 有谁知道如何解决这一问题?

我发现我已经选择了正在使用的框架。

# config/application.rb 
require "active_model/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"

修复它的方法是在application.rb文件中添加Active Job框架。

require "active_job/railtie"

或加载所有的Rails

require 'rails/all'

这似乎现在正在工作。

将它们添加到带有gem'resque'和gem'resque-scheduler'的Gemfile并捆绑安装。 我们还需要创建一个Resque配置文件:

#config/initializers/resque.rb

Resque.redis = Redis.new(:host => "localhost", :port => 6379)

我们还将需要Resque和Resque Scheduler rake任务,因此我们可以使用rake启动工作器和调度器:#lib / tasks / resque.rake

require 'resque/tasks'
require 'resque/scheduler/tasks'

namespace :resque do
  task :setup do
    require 'resque'
    require 'resque-scheduler'
  end
end

现在,我们可以使用QUEUE=* rake environment resque:work来启动QUEUE=* rake environment resque:work 如果一切正常,我们应该可以在Resque控制台中看到它。 运行resque-web并访问http://0.0.0.0:5678/overview

我们真正需要做的就是将其配置为使用Resque适配器。

#config/initializers/active_job.rb

ActiveJob::Base.queue_adapter = :resque

现在添加Jobs并对其进行排序应该可以正常工作。 如果看到undefined ActiveJob也尝试更新rails gem。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM