У меня проблемы с вызовом методов из включенного модуля внутри работника resque.В приведенном ниже примере я получаю неопределенные ошибки метода, когда пытаюсь вызвать метод say
внутри работника (который находится в модуле TestLib).Я сократил код до простых основ, чтобы проиллюстрировать проблему:
Контроллер (/app/controllers/test_controller.rb)
class TestController < ApplicationController
def testque
Resque.enqueue( TestWorker, "HI" )
end
end
Библиотека (/lib/test_lib.rb)
module TestLib
def say( word )
puts word
end
end
Worker (/workers/test_worker.rb)
require 'test_lib'
class TestWorker
include TestLib
@queue = :test_queue
def self.perform( word )
say( word ) #returns: undefined method 'say' for TestWorker:Class
TestLib::say( word ) #returns: undefined method 'say' for TestLib::Module
end
end
Rakefile (resque.rake)
require "resque/tasks"
task "resque:setup" => :environment
Я запускаю resque, используя следующую команду: rake environment resque:work QUEUE='*'
Gems: rails (3.0.4) redis (2.2.2) redis-namespace (1.0.3) resque (1.19.0)
Сервер: nginx / 1.0.6
У кого-нибудь есть идеи относительно того, что там происходит?