2014-09-12 9 views
2

Rails 4.2 및 Resque에서 ActiveJob에 약간의 문제가 있습니다.Resque를 사용하도록 ActiveJob을 구성하는 방법은 무엇입니까?

나는 redis를 설치했고, 내 Gemfile에 resque와 resque-scheduler를 추가했다. 그냥 생성 된 파일

rails g job test 

되지만 내가 어댑터 등으로 전환 할 때

NameError: uninitialized constant ActiveJob 

을 정의되지 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

나는 무엇을 놓치고? 큐 어댑터가 작동하지 않는 이유는 무엇입니까? 누구든지이 문제를 해결하는 방법을 알고 있습니까?

답변

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" 

해결 방법은 application.rb 파일에 활성 작업 프레임 워크를 추가하는 것입니다.

require "active_job/railtie" 

또는

는 레일의 모든

require 'rails/all' 

이 지금 작동하는 것 같군로드합니다.

+1

레일/모두에 어떤 파일을 추가해야합니까? resque.rake 파일에 추가하려고했지만 여전히 "초기화되지 않은 상수 ActiveJob"이 표시됩니다. 4.2 레일이 설치되어 있지 않고 ActiveJob을 보석으로 사용하려고 노력 중입니다. 아마도 이것은 제 문제입니다. – Marklar

+0

config/application.rb는 수정해야하는 파일입니다. 나는 이것을 포함하도록 답을 업데이트했다. 투표를 고려하십시오. –

+0

@ Marklar 난 그냥 당신이 아직 레일 4.2에 없다는 것을 깨달았습니다. 그래서 그것이 문제입니다. 당신이 4.2에 있다면 위의 지시를 따르십시오. 나는 보석으로 사용하지 않았으므로 거기에서 당신을 도울 수 없습니다. –

1

gemfile에 'resque'및 gem 'resque-scheduler'및 번들 설치를 추가하십시오. 그래서 우리는 레이크 우리의 노동자와 스케줄러를 시작할 수

#config/initializers/resque.rb 

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

우리는 또한 Resque 및 Resque 스케줄러 레이크 작업을 필요로합니다 : 우리는 또한 Resque 구성 파일을 작성해야합니다 # lib 디렉토리/작업/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으로 작업자를 시작할 수 있습니다. 모든 것이 제대로 작동한다면, 우리는 Resque 콘솔에서 그것을 볼 수 있어야합니다. resque-web을 실행하고 http://0.0.0.0:5678/overview을 방문하십시오.

우리가 정말로해야 할 일은 Resque 어댑터를 사용하도록 구성하는 것뿐입니다.

#config/initializers/active_job.rb 

ActiveJob::Base.queue_adapter = :resque 

이제 작업을 추가하고 예상 한대로 작동해야합니다. undefined ActiveJob이 표시되면 rails gem을 업데이트 해보십시오.