如何配置ActiveJob以使用Resque?

lui*_*gal 2 ruby-on-rails resque ruby-on-rails-4 rails-activejob

我在Rails 4.2和Resque中使用ActiveJob有点困难.

我已经安装了redis,并且已经将resque和resque-scheduler添加到我的Gemfile中.

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

rails g job test
Run Code Online (Sandbox Code Playgroud)

但我一直没有定义ActiveJob的错误

NameError: uninitialized constant ActiveJob
Run Code Online (Sandbox Code Playgroud)

当我像这样切换适配器时,或丢失方法

config.active_job.queue_adapter = :resque
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

/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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

lui*_*gal 5

我发现我选择了我正在使用的框架.

# 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"
Run Code Online (Sandbox Code Playgroud)

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

require "active_job/railtie"
Run Code Online (Sandbox Code Playgroud)

或者加载所有Rails

require 'rails/all'
Run Code Online (Sandbox Code Playgroud)

这似乎现在正在起作用.