diff --git a/ChangeLog b/ChangeLog index c8f843082b..24ad19d3f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Feb 4 21:52:06 2008 Nobuyoshi Nakada + + * lib/delegate.rb (DelegateClass): use define_method instead of + module_eval to improve performance. [ruby-dev:33586] + Mon Feb 4 16:44:24 2008 Nobuyoshi Nakada * configure.in (darwin): NSIG is not defined if _XOPEN_SOURCE > 500L. diff --git a/lib/delegate.rb b/lib/delegate.rb index 970bb9d342..c50eac2f61 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -143,7 +143,7 @@ class Delegator target.__send__(m, *args, &block) end rescue Exception - $@.delete_if{|s| /^#{__FILE__}:\d+:in `method_missing'$/ =~ s} #` + $@.delete_if{|s| %r"\A#{__FILE__}:\d+:in `method_missing'\z"o =~ s} ::Kernel::raise end end @@ -246,9 +246,17 @@ class SimpleDelegator