require'active_support/lazy_load_hooks'# run_load_hooksが実行されていないので呼ばれないActiveSupport.on_load:fugadoputs'start 1st on load'fugaputs'end 1st on load'endclassFugadefself.fugaputs'fugafuga'endendputs'before run_load_hooks'# run_load_hooksを実行すると、4行目の ActiveSupport.on_load が呼ばれるActiveSupport.run_load_hooks:fuga,Fugaputs'after run_load_hooks'# run_load_hooks が実行されているのですぐに呼ばれるActiveSupport.on_load:fugadoputs'start 2st on load'fugaputs'end 2st on load'end# 実行結果# before run_load_hooks# start 1st on load# fugafuga# end 1st on load# after run_load_hooks# start 2st on load# fugafuga# end 2st on load
defalias_method_chain(target,feature)# Strip out punctuation on predicates, bang or writer methods since# e.g. target?_without_feature is not a valid method name.aliased_target,punctuation=target.to_s.sub(/([?!=])$/,''),$1yield(aliased_target,punctuation)ifblock_given?with_method="#{aliased_target}_with_#{feature}#{punctuation}"without_method="#{aliased_target}_without_#{feature}#{punctuation}"alias_methodwithout_method,targetalias_methodtarget,with_methodcasewhenpublic_method_defined?(without_method)publictargetwhenprotected_method_defined?(without_method)protectedtargetwhenprivate_method_defined?(without_method)privatetargetendend