Bug #16242
Updated by osyo (manga osyo) about 6 years ago
Refinements method call to failed with `prepend`.
## No problem
```ruby
module M
# Methods that you want to call only within this context
refine M do
def refine_method
"refine_method"
end
end
using M
def hoge
# OK: `refine_method` calls the method
refine_method
end
end
class X
include M
end
pp X.new.hoge
# => "refine_method"
```
## No problem
* If `prepend` another module, the search for `refine_method` fails
```ruby
module OtherM
end
module M
# Added prepend
prepend OtherM
refine M do
def refine_method
"refine_method"
end
end
using M
def hoge
# Error: `hoge': undefined local variable or method `refine_method' for #<X:0x00007fa05a024390> (NameError)
refine_method
end
end
class X
include M
end
# Error
pp X.new.hoge
```
## Environment
Reproduced in the following environment.
```ruby
RUBY_VERSION # => "2.7.0"
RUBY_REVISION # => "02dfa0f16361c498e0f529054b00e3e09730892b"
RUBY_PLATFORM # => "x86_64-darwin17"
```
You can also confirm that it is reproduced here.
https://wandbox.org/permlink/I6tQesDRntT7JZqB https://wandbox.org/permlink/e73sVBRWQBfXP3zH