3

Ruby コードに before_methods と after_methods をいくつか追加する必要があります。これを行う最善の方法は何ですか?

私は次のような解決策を見てきました:

しかし、それらは私のニーズを満たしていません。既存の方法を変更しない代替手段を探しています。

基本的に、特定のメソッドが呼び出された後/前にコードを実行する方法が必要です。

class User
  after :some_method, call: :other_method

  def some_method
    ....
  end

  def other_method
    puts "Matz"
  end
end

前もって感謝します :)

もう少し説明が必要な場合は、お知らせください。

4

2 に答える 2

1
class User
  def some_method
    puts "some method"
  end
end

set_trace_func proc { |event, file, line, id, binding, classname|
  printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
}

user = User.new
user.some_method

#=> 
c-return test.rb:9  set_trace_func   Kernel
    line test.rb:11                    
  c-call test.rb:11        new    Class
  c-call test.rb:11 initialize BasicObject
c-return test.rb:11 initialize BasicObject
c-return test.rb:11        new    Class
    line test.rb:12                    
    call test.rb:2  some_method     User
    line test.rb:3  some_method     User
  c-call test.rb:3        puts   Kernel
  c-call test.rb:3        puts       IO
  c-call test.rb:3       write       IO
some methodc-return test.rb:3       write       IO
  c-call test.rb:3       write       IO

c-return test.rb:3       write       IO
c-return test.rb:3        puts       IO
c-return test.rb:3        puts   Kernel
  return test.rb:4  some_method     User

ユーザーのメソッドに関する情報のみを出力するようにprocを変更できます。

于 2012-08-01T07:44:29.567 に答える
-1

呼んでみましたか?お気に入り:

def some_method
  ...
  other_method
end

def other_method
  puts "Matz"
end
于 2012-07-31T21:14:41.813 に答える