From: =?ISO-8859-1?Q?Une_B=E9vue?= on 15 May 2010 04:33 i have a script in my HOME/bin : /Users/yt/bin/path_test.rb my "HOME/bin" is in the PATH then, if from this script, i outputs $0 and __FILE__ with : path_test.rb i got : $0 = /Users/yt/bin/path_test.rb __FILE__ = /Users/yt/bin/path_test.rb and the same outputs with : /Users/yt/bin/path_test.rb why do i have the same outputs in this case ? in fact i'm looking that because i do have Ruby class extension in a subfolder of "HOME/bin", namely : HOME/bin/ruby_ext where i put my extension for classes of which i could require : require "#{File.dirname($0)}/ruby_ext/ansi_color" what's the best way to require in that case, does i need an "absolute path (starting from / ) or not ? -- � Je suis s�r que la ga�t� ambigu� du dr�le de gar�on qui a bu du whisky et fait le z�bre sur un vieux ca�man � No�l dans le ca�on, a �t� b�n�fique � l'�me du po�te bl�me, ainsi qu'� son c�ur & c�tera ! � (� Jean-Paul Blanc)
From: Robert Klemme on 15 May 2010 05:28 On 15.05.2010 10:33, Une Bévue wrote: > > i have a script in my HOME/bin : > > /Users/yt/bin/path_test.rb > > my "HOME/bin" is in the PATH > > then, if from this script, i outputs $0 and __FILE__ > > with : > > path_test.rb i got : > $0 = /Users/yt/bin/path_test.rb > __FILE__ = /Users/yt/bin/path_test.rb > > > and the same outputs with : > /Users/yt/bin/path_test.rb > > why do i have the same outputs in this case ? Because the shell will also expand full names. How does your PATH look like? I assume you set something like PATH="${PATH}:${HOME}/bin" - in that case you'll have the absolute path to ~/bin in your PATH and consequently the script is invoked with absolute path. > in fact i'm looking that because i do have Ruby class extension in a > subfolder of "HOME/bin", namely : > HOME/bin/ruby_ext > where i put my extension for classes of which i could require : > require "#{File.dirname($0)}/ruby_ext/ansi_color" > > what's the best way to require in that case, does i need an "absolute > path (starting from / ) or not ? IMHO the best way is to define a local location of library files and set RUBYLIB to that directory (I use "$HOME/lib/ruby" for that because I prefer to have lib code separate from programs, but in your case you could also use "$HOME/bin"). If you want to do it on a per script basis you could do this at the beginning of your script (i.e. before any requires): $:.unshift "/your/folder/here" Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
From: =?ISO-8859-1?Q?Une_B=E9vue?= on 15 May 2010 06:09 Robert Klemme <shortcutter(a)googlemail.com> wrote: > > Because the shell will also expand full names. How does your PATH look > like? I assume you set something like PATH="${PATH}:${HOME}/bin" - in > that case you'll have the absolute path to ~/bin in your PATH and > consequently the script is invoked with absolute path. > > > in fact i'm looking that because i do have Ruby class extension in a > > subfolder of "HOME/bin", namely : > > HOME/bin/ruby_ext > > where i put my extension for classes of which i could require : > > require "#{File.dirname($0)}/ruby_ext/ansi_color" > > > > what's the best way to require in that case, does i need an "absolute > > path (starting from / ) or not ? OK, i see. > IMHO the best way is to define a local location of library files and set > RUBYLIB to that directory (I use "$HOME/lib/ruby" for that because I > prefer to have lib code separate from programs, but in your case you > could also use "$HOME/bin"). > > If you want to do it on a per script basis you could do this at the > beginning of your script (i.e. before any requires): > > $:.unshift "/your/folder/here" fine thanks ! -- � Je suis s�r que la ga�t� ambigu� du dr�le de gar�on qui a bu du whisky et fait le z�bre sur un vieux ca�man � No�l dans le ca�on, a �t� b�n�fique � l'�me du po�te bl�me, ainsi qu'� son c�ur & c�tera ! � (� Jean-Paul Blanc)
|
Pages: 1 Prev: Range on strings. Next: Real life use of each_cons? (... follow up) |