"Namespace on Read" for Ruby, FAQ(gist.github.com)
gist.github.com
"Namespace on Read" for Ruby, FAQ
https://gist.github.com/tagomoris/4392f1091f658294bd4d473d8ff631cb
5 comments
Looks really interesting
I haven't done a lot of Ruby lately, and I don't know what the `NameSpace`-class is intended to be used for, but is the effect of the suggestion similar to that of https://github.com/hannestyden/require-here ?
It's intended to be used as a scope within which the default attachment point for constants is not the Object class but instead the `NameSpace` instance that the `require` call was made on.
Most people are talking about how this would allow you to require multiple versions of the same library (each in its own NameSpace), but I think that would be a bad use of it. I don't remember the last time I had a problem with conflicting libraries in Ruby, and I think the last time I did I just forked the offending library.
A more interesting use case is to have a framework like Rails use it to define namespaces for files without those files having to constantly refer to the name of the namespace they're in. That's something that's bugged me anyway.
Most people are talking about how this would allow you to require multiple versions of the same library (each in its own NameSpace), but I think that would be a bad use of it. I don't remember the last time I had a problem with conflicting libraries in Ruby, and I think the last time I did I just forked the offending library.
A more interesting use case is to have a framework like Rails use it to define namespaces for files without those files having to constantly refer to the name of the namespace they're in. That's something that's bugged me anyway.
You can somewhat achieve this by defining one top level module and then do the nesting of everything else with ::
module SomeGrouping
class Some::Nested
end
class Whatever
def foo
Some::Nested.new
end
end
end
Sorry typing code on phone is a nightmareScoping module references has been a pain point in ruby since 1.0. Glad to see the community producing some solutions to the issue.
Curious to see how Namespace will work in practice with all the metaprogramming that's so common in popular Ruby libraries. I can also see this enabling applications to use multiple versions of the same library or module, for better or worse.
Curious to see how Namespace will work in practice with all the metaprogramming that's so common in popular Ruby libraries. I can also see this enabling applications to use multiple versions of the same library or module, for better or worse.