-1

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アクションではない
  • メソッド呼び出しの方法を変更したくない

お願い助けて...

アップデート

このコードを自動化するための宝石を見つけました:

  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
4

1 に答える 1

5

ActiveModel::Callbacksを使用できます

define_model_callbacks :create

def create
  run_callbacks :create do
    # do your thing here
  end
end

このrun_callbacks行を非表示にする小さなヘルパー メソッドを作成することもできます。次のようになります。

hooked_method :create do
  # do your thing here
end
于 2012-06-10T13:04:47.640 に答える