aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorRobin Dupret <robin.dupret@gmail.com>2014-08-17 16:31:00 +0200
committerRobin Dupret <robin.dupret@gmail.com>2014-08-18 15:43:49 +0200
commiteb73d7dafa343507a60f765c43c748d6987ec652 (patch)
tree4336d688de6658a22a6a039aa1a4d12585104005 /activesupport/lib
parentb30b99c6158766a6b09e8d3b1f91938fc0884605 (diff)
downloadrails-eb73d7dafa343507a60f765c43c748d6987ec652.tar.gz
rails-eb73d7dafa343507a60f765c43c748d6987ec652.tar.bz2
rails-eb73d7dafa343507a60f765c43c748d6987ec652.zip
Define the Duration#instance_of? method
Since Duration is extending from ProxyObject which extends itself from BasicObject, the Duration object doesn't respond to the #instance_of? method. Thus, the #method_missing hook get triggered, delegating the method to its `value` attribute. However, Rubinius' #eql? definition relies on #instance_of?, thus this will equal to true with a Fixnum (since its `value` attribute is a Fixnum) while it should not. The previous behavior was wrong anyway, no matter the implementation.
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/duration.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/duration.rb b/activesupport/lib/active_support/duration.rb
index 0ae641d05b..084d13a9e3 100644
--- a/activesupport/lib/active_support/duration.rb
+++ b/activesupport/lib/active_support/duration.rb
@@ -35,10 +35,14 @@ module ActiveSupport
end
def is_a?(klass) #:nodoc:
- Duration == klass || value.is_a?(klass)
+ instance_of?(klass) || value.is_a?(klass)
end
alias :kind_of? :is_a?
+ def instance_of?(klass) # :nodoc:
+ Duration == klass
+ end
+
# Returns +true+ if +other+ is also a Duration instance with the
# same +value+, or if <tt>other == value</tt>.
def ==(other)