Issue #12920 has been updated by Tomoyuki Chikanaga.


OMG I've confirmed with the script in the description (prepend and using with Integer) and it cannot reproduce NoMethodError on 2.3.2. But it's because Time.now doesn't use Integer#+ but Fixnum#+.
I've confirmed https://bugs.ruby-lang.org/issues/12920#note-3 was reproducible.
I'm going to backport this and try to understand the impact of this issue.

----------------------------------------
Bug #12920: Strange NoMethodError in Time.now
https://bugs.ruby-lang.org/issues/12920#change-61544

* Author: Kouhei Yanagita
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.4.0dev (2016-11-10 trunk 56692) [x86_64-darwin15]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: REQUIRED
----------------------------------------
I got a strange NoMethodError in Time.now.

~~~
Integer.prepend(Module.new)
module Foo
  refine Integer do
    define_method(:+) { }
  end
end
Time.now
~~~

~~~
% ~/tmp/ruby-trunk/bin/ruby -v a.rb
ruby 2.4.0dev (2016-11-10 trunk 56692) [x86_64-darwin15]
a.rb:7:in `initialize': undefined method `+' for 1478773005000000000:Integer (NoMethodError)
	from a.rb:7:in `now'
	from a.rb:7:in `<main>'
~~~



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>