Issue #11919 has been updated by Tsuyoshi Sawada.


Nobuyoshi Nakada wrote:
> You can write it as
> 
> ~~~ruby
> using Module.new {
>   refine ...
>   ...
> }
> ~~~

Right. I had forgotten about operator precedence. My example did not make sense.

> Or without `Module.new`?
> 
> ~~~ruby
> using do
>   refine ...
>   ...
> end
> ~~~

I think this is what I actually wanted to ask for.

----------------------------------------
Feature #11919: Passing a module directly 
https://bugs.ruby-lang.org/issues/11919#change-55840

* Author: Tsuyoshi Sawada
* Status: Feedback
* Priority: Normal
* Assignee: 
----------------------------------------
Refinement requires a named module:

~~~ruby
module MyRefinement
  refine ...
  ...
end

using MyRefinement
~~~

but often (but not always), refinements are called by the `using` command only in once in a single file, and should not need to be named in such case. Also, the purpose of refinement is to not pollute classes with methods. Necessity to define a module and polluting the name space looks to me to go against this idea.

I would like to do:

~~~ruby
using Module.new do
  refine ...
  ...
end
~~~




-- 
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>