加载类时的回调

时间:2011-08-27 15:04:41

标签: ruby

是否有可以在加载类时执行的回调。我在想这样的事情。

register_callback('Foo', :debug_message)

def debug_message
 puts "Foo has been loaded"
end

require 'foo'

1 个答案:

答案 0 :(得分:7)

不,没有。并且不能,原因很简单,Ruby中的类 open :它们从不完全“加载”,你可以总是在以后任何时候添加,删除,重命名和覆盖方法。

例如,以下课程何时被“加载”?

# foo.rb
class Foo
  def some_method
  end
end

# bar.rb
class Foo
  def some_other_method
  end
end

# baz.rb
class Foo
  def some_method
  end
end

require 'foo'
require 'bar'

require 'baz' if rand > 0.5