Been playing with Ruby on Rails for awhile and decided to take a look through the actual source. Grabbed the repo from GitHub and started looking around. Came across some co
$
identifies a global variable, as opposed to a local variable, @instance variable, or @@class variable.
Among the language-supplied global variables are $:
, which is also identified by $LOAD_PATH
I wanna note something weird about Ruby!
$
does indeed mean load path. And ;
means "end line". But!
$;
means field separator. Try running $;.to_s
in your REPL and you'll see it return ","
. That's not all! $ with other suffixes can mean many other things.
Why? Well, Perl of course!
$:.unshift
is the same as
$LOAD_PATH.unshift
. You can also say:
$: <<
$LOAD_PATH <<
They are pretty common Ruby idioms to set a load path.
To quote the Ruby Forum:
ruby comes with a set of predefined variables
$: = default search path (array of paths)
__FILE__ = current sourcefile
if i get it right (not 100% sure) this adds the lib path to this array of search paths by going over the current file. which is not exactly the best way, i would simply start with RAILS_ROOT (at least for a rails project)
$: is the global variable used for looking up external files.
From http://www.zenspider.com/Languages/Ruby/QuickRef.html#18
$: Load path for scripts and binary modules by load or require.