Issue #14344 has been updated by shevegen (Robert A. Heiler).


I like the proposed syntax. Syntax is one major reason for
me, oddly enough, to not use refinements. In particular the
"using" clause felt weird, so I like changes (improvements?)
to the syntax.

I think your syntax suggestion is better than the status quo
too.

However had, I am saying all of this without really having
used refinements extensively (other than in test.rb files),
so I am essentially not qualified to comment really. I'd
be inclined to use your suggestion more than the "using"
variant, though. ;)

(There was some presentation at ruby or railsconf about 
someone talking about nobody using refinements or so, 
a few years ago perhaps. A bit like the old "nobody knows
nobu", which isn't true by now anymore either. Either way
I think people should comment who use refinements a lot
too, since they should be able to consider the impact of
the changed syntax proposal.)

----------------------------------------
Feature #14344: refine at class level
https://bugs.ruby-lang.org/issues/14344#change-69495

* Author: kddeisz (Kevin Deisz)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
I rely on refinements a lot, but don't want to keep writing `Module.new` in code. I'm proposing `Object::refine`, which would create an anonymous module behind the scenes with equivalent functionality. So:

~~~ ruby
class Test
  using Module.new {
    refine String do
      def refined?
        true
      end
    end
  }
end
~~~

would become

~~~ ruby
class Test
  refine String do
    def refined?
      true
    end
  end
end
~~~

It's a small change, but reads a lot more clearly. Thoughts?



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