I was reading about namespaces in Ruby the other day and came across an interesting point where it compared
Since I started writing Ruby, I did not though about the secrets behind the usage of
require when other languages use
Let's suppose we have a file called
weather_forecast.rb , that just has some functionality in it for returning weather forecasting information.
In order to execute it in our code, we could do something like
Everything looks good up to this point. We load the code, use it in our program, and move on with our lives.
However, the constants that the file defined, are not removed once the file has loaded, and can pollute our program.
To solve this problem, we could load the file as such
load('weather_forecast.rb', true). The
true argument, loads the file wrapping it around an anonymous namespace containing all constants that will be destroyed after the code is loaded.
On the other hand, we find
require. It also loads code, but rather than loading it for execution, as
load does, it imports the library avoiding those leftover class names.
As an additional fact,
require tries only once to load the file, while
load does it every time the file is executed.