diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-11-13 12:15:49 -0800 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-11-13 12:25:54 -0800 |
commit | 9acc824d96db039486fc493c6f904035fe386967 (patch) | |
tree | 5b999c536875abb8ba1177c83e7b9da78b10841b /activesupport/lib/active_support/whiny_nil.rb | |
parent | 0214d337b3b3301f4e1478248b386d43ca6c15e0 (diff) | |
download | rails-9acc824d96db039486fc493c6f904035fe386967.tar.gz rails-9acc824d96db039486fc493c6f904035fe386967.tar.bz2 rails-9acc824d96db039486fc493c6f904035fe386967.zip |
Ruby 1.9.2: disallow explicit coercion via method_missing. Only give friendly nil errors for Array and Active Record methods.
Diffstat (limited to 'activesupport/lib/active_support/whiny_nil.rb')
-rw-r--r-- | activesupport/lib/active_support/whiny_nil.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/whiny_nil.rb b/activesupport/lib/active_support/whiny_nil.rb index 36fe9510ba..c4aaba7ab3 100644 --- a/activesupport/lib/active_support/whiny_nil.rb +++ b/activesupport/lib/active_support/whiny_nil.rb @@ -43,7 +43,14 @@ class NilClass private def method_missing(method, *args, &block) - raise_nil_warning_for METHOD_CLASS_MAP[method], method, caller + # Ruby 1.9.2: disallow explicit coercion via method_missing. + if method == :to_ary || method == :to_str + super + elsif klass = METHOD_CLASS_MAP[method] + raise_nil_warning_for klass, method, caller + else + super + end end # Raises a NoMethodError when you attempt to call a method on +nil+. @@ -55,4 +62,3 @@ class NilClass raise NoMethodError, message, with_caller || caller end end - |