假设您有这样的方法:
def log_yield(sql, args=nil)
sql = "#{sql}; #{args.inspect}" if args
t0 = Time.now
begin
yield
rescue => e
log_exception(e, sql)
raise
ensure
t1 = Time.now
log_duration(Integer((t1-t0)*1000), sql) unless e
end
end
我需要覆盖此方法并以类似的方式实现它但是我需要获取yield
返回的块。
(具体来说,我需要确定在Sequel :: Database中生成特定sql的块)
答案 0 :(得分:0)
块只是美化参数。在方法中,它通过ruby实现为您添加,但通常您可以将方法定义为:
def log_yield(sql, args=nil, &block)
# do whatever you want with the block here
end
当然,您可以在继承的类中自由地覆盖它。如果没有提供块,您可以使用block_given?
改变方法中的逻辑。