2011-10-20 100 views
1

我试图将一个模块包含到我的resque工作者中但是我一直收到这个错误 -Rails Resque - 在worker中包含来自rails lib的模块

failed: #<NoMethodError: undefined method `build_page' for RefreshEventCache:Class> 

工作者 - /app/worker/refresh_event_cache.rb

require File.dirname(__FILE__) + '/../../lib/locomotive/render.rb' 
class RefreshEventCache 
    include Resque::Plugins::UniqueJob 
    include Locomotive::Render 

    @queue = :events_queue 

    def self.perform(url) 
    build_page(url) 
    end 
end 

模块 -/lib/locomotive/render.rb

module Locomotive 
    module Render 

    extend ActiveSupport::Concern 

    module InstanceMethods 

     def build_page(full_path) 
     Rails.logger.debug "BUILDING PAGE" 
     end 
    end 
    end 
end 

任何想法?

+0

可能重复[Rails在外部模块Resque undefined方法错误](http://stackoverflow.com/questions/8130071/rails-resque-undefined-method-error-in-external-module) – d3vkit

回答

2

您是否尝试过在延长的ActiveSupport ::关注添加到主模块机车这样的:

module Locomotive 
    extend ActiveSupport::Concern 
    module Render 

    module InstanceMethods 

     def build_page(full_path) 
     Rails.logger.debug "BUILDING PAGE" 
     end 
    end 
    end 
end 

只是猜测,...香港专业教育学院使用单一模块的扩展,但是这似乎是合乎逻辑的我。

+0

感谢您的答复,试过这个,但仍然得到相同的错误 – Alex

+0

你已经尝试过没有子模块渲染? – davidb

+0

对不起,你的意思是? – Alex