![](/img/trans.png)
[英]How to use ActiveJob (Resque Adapter) with Rails no ActiveRecord (using Mongoid)
[英]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.