Я пишу простой обратный вызов для драгоценного камня, над которым я работаю. Обратите внимание, что из-за определенных архитектурных ограничений я не могу использовать метод ActiveSupport define_callbacks
для этого конкретного случая.Передача аргумента блоку обратного вызова
Прямо сейчас, у меня есть что-то вроде этого:
def self.after_data_transcoding(&block)
define_method :_after_data_transcoding_callback { block.call }
end
так что случай использования похож на это:
class MyClass
after_data_transcoding do
end
end
Фактический вызов осуществляется instance.send(:_after_data_transcoding_callback)
.
Код пока прекрасно работает. Я хотел бы сделать еще один шаг и получить доступ к ответу в качестве аргумента блока:
class MyClass
after_data_transcoding do |response|
# Do something with the response
end
end
Однако, у меня не было большого успеха. Любые мысли о том, как я должен действовать?