【发布时间】:2012-06-13 16:42:32
【问题描述】:
我想找一个 gem 或者写一个实现方法钩子的代码。
class A
include SomeModule
before_hook :meth, lambda { puts 'bla' }
def meth
puts 'meth'
end
end
# A.new.meth => "bla\nmeth\n"
我正在使用 Rails,我知道回调和过滤器,但是
-
meth不是动作 - 我不想改变我的方法调用方式
请帮帮我...
更新
我找到了一个可以自动执行此代码的 gem:
include ActiveSupport::Callbacks
define_callbacks :meth_callback
set_callback :meth_callback, :before do |object|
# my code
end
def meth_with_callback
run_callbacks(:meth_callback) { meth }
end
alias_method_chain :meth, :callback
【问题讨论】:
-
@jdoe 是的,这就是我想要的,但是没有这个功能的宝石吗?
-
@АлександрКуракин - 如果您返回并接受之前问题的答案,您将获得更好的答案。
-
@АлександрКуракин 这对宝石来说太简单了。它已经是 Rails 的一部分。有人想提取什么?..
标签: ruby-on-rails ruby gem