Project

General

Profile

Actions

Bug #15135

closed

Refining #initialize method not working

Added by cbruckmayer (Christian Bruckmayer) over 5 years ago. Updated over 5 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0p0 (2017-12-25 revision 61468)
[ruby-core:89062]

Description

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

Actions

Also available in: Atom PDF

Like0
Like0