From: christian@... Date: 2018-09-18T09:37:22+00:00 Subject: [ruby-core:89062] [Ruby trunk Bug#15135] Refining #initialize method not working Issue #15135 has been reported by cbruckmayer (Christian Bruckmayer). ---------------------------------------- Bug #15135: Refining #initialize method not working https://bugs.ruby-lang.org/issues/15135 * Author: cbruckmayer (Christian Bruckmayer) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- See the following example: ``` class C def initialize(arg) puts arg end end module M refine C do def initialize(arg1, arg2) puts arg1, arg2 end end end using M C.new("foo") # works C.new("foo", "bar") # wrong number of arguments (given 2, expected 1) (ArgumentError) ``` This code will throw an ``refinement.rb:2:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)`` exception. I would expect that it is possible to refine the initialize method to have similar behavior as monkey patching. If this is intended behavior I would at least expect this to be documented here: https://docs.ruby-lang.org/en/2.5.0/syntax/refinements_rdoc.html -- 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>