From e56dbcc3187a71133c46df04693b61ed0da07b7c Mon Sep 17 00:00:00 2001 From: snusnu Date: Wed, 31 Mar 2010 00:18:53 +0200 Subject: [PATCH] Better ruby interpreter compatibility This is partly a regression from a jruby fix that has been applied some time ago See http://is.gd/b7fGz Also, it solves the following issue on ruby-1.9 Implicit argument passing of super from method defined by define_method() [#1228 state:resolved] --- lib/dm-rails/railties/benchmarking_mixin.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/dm-rails/railties/benchmarking_mixin.rb b/lib/dm-rails/railties/benchmarking_mixin.rb index 498f3a3..cec8bf7 100644 --- a/lib/dm-rails/railties/benchmarking_mixin.rb +++ b/lib/dm-rails/railties/benchmarking_mixin.rb @@ -2,14 +2,15 @@ module DataMapper module Adapters module Benchmarking - %w(create read update delete).each do |method| - - define_method method do |*args, &block| - result = nil - @runtime ||= 0 - @runtime += Benchmark.ms { result = super } - result - end + %w[ create read update delete ].each do |method| + class_eval <<-RUBY, __FILE__, __LINE__ + def #{method}(*args, &block) + result = nil + @runtime ||= 0 + @runtime += Benchmark.ms { result = super(*args, &block) } + result + end + RUBY end def reset_runtime