4 ms·
Because it is baked into the class itself. Ruby is global variables "fiesta", because all classes and modules (and functions that begin with first uppercase let
by dinoreic 5y ago
Because it is baked into the class itself. Ruby is global variables "fiesta", because all classes and modules (and functions that begin with first uppercase letter) and became global once loaded.
Because of that, you can not have 2 parallel versions on the same lib, in the sane app, not possible. You load classes once, and they are accessible everywhere, magic! No need for loader headers as in JS, Python, Java, Go, ...
That said, ruby devs like to have "sane" extensions like to_json. People proffer to write "@object.to_h.to_json" instead of "JSON.parse(@object.to_h)" and not to think about loading json lib. I agree that Rails is abusing this too much.
- jaynetics 5y ago> you can not have 2 parallel versions on the same lib, in the sane app with the very latest ruby version, you actually can: https://rubyreferences.github.io/rubychanges/3.1.html#kernelload-module-as-a-second-argument https://rubyreferences.github.io/rubychanges/3.1.html#kernel...
- lloeki 5y agoI suppose you're referencing: Kernel#load: module as a second argument (the link jumps to some random place for me) Well, you always could, it was just a bit more involved: https://github.com/lloeki/pak https://github.com/lloeki/pak