In the Ruby programming language, as $ is called:

I want to know more about $: but I do not call it that.

 :015 > $: => ["/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.1.0", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby/1.9.1", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin11.1.0", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1", "/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1/x86_64-darwin11.1.0"] 
  • How does is called?
  • How and when is it used?
  • Should I use it at all, is it good practice or bad practice?
  • Is this supported by all Ruby implementations?
  • Any docs about this?
+2
source share
3 answers
  • The canonical (English) name is $: global - $LOAD_PATH .
  • As the name implies, this is an array of library search paths, that is, an array of strings representing all the folders in which the interpreter will search for libraries (when it encounters the require "mylibrary" )
  • It can be used with the same caution that must be paid for when working with global ones. In fact, it is often used when writing test or demo scripts included in gems or libraries, so the test changes the download path to find the test library before installing it (for example, $: << "../lib" , assuming that the script is in sibling lib )
  • It is used by all canonical versions / implementations of Ruby. Please note that the current directory . was part of $: on 1.8.x and was removed for security reasons at 1.9.x.
  • Documents are available on each ruby ​​primer (picaxe book, ruby ​​docs website).
+3
source

Ruby has some PRELIMINARY VARIABLES

 Pre-defined variables $! The exception information message set by 'raise'. $@ Array of backtrace of the last exception thrown. $& The string matched by the last successful match. $` The string to the left of the last successful match. $' The string to the right of the last successful match. $+ The highest group matched by the last successful match. $1 The Nth group of the last successful match. May be > 1. $~ The information about the last match in the current scope. $= The flag for case insensitive, nil by default. $/ The input record separator, newline by default. $\ The output record separator for the print and IO#write. Default is nil. $, The output field separator for the print and Array#join. $; The default separator for String#split. $. The current input line number of the last file that was read. $< The virtual concatenation file of the files given on command line (or from $stdin if no files were given). $> The default output for print, printf. $stdout by default. $_ The last input line of string by gets or readline. $0 Contains the name of the script being executed. May be assignable. $* Command line arguments given for the script sans args. $$ The process number of the Ruby running this script. $? The status of the last executed child process. $: Load path for scripts and binary modules by load or require. $" The array contains the module names loaded by require. $DEBUG The status of the -d switch. $FILENAME Current input file from $<. Same as $<.filename. $LOAD_PATH The alias to the $:. $stderr The current standard error output. $stdin The current standard input. $stdout The current standard output. $VERBOSE The verbose flag, which is set by the -v switch. $-0 The alias to $/. $-a True if option -a is set. Read-only variable. $-d The alias to $DEBUG. $-F The alias to $;. $-i In in-place-edit mode, this variable holds the extension, otherwise nil. $-I The alias to $:. $-l True if option -l is set. Read-only variable. $-p True if option -p is set. Read-only variable. $-v The alias to $VERBOSE. $-w True if option -w is set. 

http://www.zenspider.com/Languages/Ruby/QuickRef.html

+5
source

This is equivalent to $LOAD_PATH . So I think you can call it the "boot path". Google ruby load_path and you should find a lot of useful information.

Personnaly I prefer to read $LOAD_PATH , but $: is part of the language, so I assume this is normal to use.

+2
source

Source: https://habr.com/ru/post/899770/


All Articles