Foo::Bar.do_thing
вызывает do_thing
на самом модуле. Вы определили этот метод как def do_thing
, что делает его методом экземпляра. Это означает, что для вызова do_thing
вам нужно иметь экземпляр этого класса, в котором этот модуль смешан в (1), или вам нужно изменить этот метод на метод модуля (2).
Код для (1)
class A
include Foo::Bar
end
module Foo
module Bar
def do_thing_as_delayed_job(my_id, my_option_array)
Delayed::Job.enqueue A.new.do_thing(my_id, my_option_array)
end
def do_thing(my_id, my_option_array)
Rails.logger.info("Yay, I got here!")
end
end
end
Код для (2):
module Foo
module Bar
def do_thing_as_delayed_job(my_id, my_option_array)
Delayed::Job.enqueue A.new.do_thing(my_id, my_option_array)
end
def self.do_thing(my_id, my_option_array)
Rails.logger.info("Yay, I got here!")
end
end
end
Обратите внимание, что в обоих случаях module
является строчным.