[ruby-core:76674] [Ruby trunk Feature#9704] Refinements as files instead of modules
From:
transfire@...
Date:
2016-08-03 04:54:09 UTC
List:
ruby-core #76674
Issue #9704 has been updated by Thomas Sawyer.
Has any more thought been given to this? I had a recent request to have Ruby Facets to work as refinements, but I hesitate b/c it literally means creating a second copy of every extension method.
----------------------------------------
Feature #9704: Refinements as files instead of modules
https://bugs.ruby-lang.org/issues/9704#change-59891
* Author: Thomas Sawyer
* Status: Open
* Priority: Normal
* Assignee:
----------------------------------------
If refinements are to remain file-scoped, then it would be more convenient if `using` worked at the file level, akin to `require`, rather than behave like a module `include`. For instance, instead of:
~~~
# foo.rb
module Foo
refine String do
def some_method
...
end
end
end
~~~
~~~
require 'foo'
using Foo
~~~
We could do:
~~~
# foo.rb
class String
def some_method
...
end
end
~~~
~~~
using 'foo'
~~~
This would make `require` and `using`, in a certain sense, *polymorphic* --if we `require` it will extend the classes directly, but if `using` then they will be refined instead.
--
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>