我正在为我正在研究的宝石写一个简单的回调。请注意,由于某些架构限制,我无法针对此特定情况使用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
但是,我还没有取得多大成功。关于我应该如何进行的任何想法?
答案 0 :(得分:1)
事实证明这比我想象的要容易。
define_method(:_after_data_transcoding_callback) { |response|
block.call(response)
}
instance.send(:_after_data_transcoding_callback, response)