introspection/tracepoint_attribute_methods_no_parens.rb
tests/_examples/introspection/tracepoint_attribute_methods_no_parens.rb in the metorex repository.
class Rate
attr_reader :amount
attr_writer :region
attr_accessor :currency
def initialize
@amount = 1
end
def total = amount * 2
end
rate = Rate.new
events = []
tracepoint = TracePoint.new :call, :c_call, :return, :c_return do |trace|
events << [trace.event, trace.method_id] if %i[total amount region= currency currency=].include? trace.method_id
end
tracepoint.enable do
rate.total
rate.region = :west
rate.currency = :usd
rate.currency
end
events.each { |event| p event }
Output:
[:call, :total]
[:c_call, :amount]
[:c_return, :amount]
[:return, :total]
[:c_call, :region=]
[:c_return, :region=]
[:c_call, :currency=]
[:c_return, :currency=]
[:c_call, :currency]
[:c_return, :currency]