Tom said:
Aaron Smith wrote:
Hey Tom, Thanks, that information is definitely what I'm looking for.
How would I get that info from within a ruby script. Specifically the
"GEM PATH" is what I would need. Is there a method to get that?
or rather, the "INSTALLATION DIRECTORY."
===========================
If you had any idea how paltry my knowledge of Ruby really is you
would ask me such questions! But...I got us this far, so...
I think I'd try a system call to "gem env", and put the output in a
string, then locate "INSTALLATION DIRECTORY:" with StringScanner, and
take everything after that, up to the EOL as the path you're after.
Easy, actually.
Only I'm momentarily stumped as to how to make the system call AND
capture the output. Thomas (Pickaxe 2) says it can be done using
backtics. I tried it in irb and got nothing. Still trying to figure
it out. It'd be a good trick to know.
t.
Bummer. In order to preserve my reputation, I managed to get irb a bit
hung up, so of course it didn't perform `gem env` as I expected.
Ungummed, as it were, it works fine. E.g.:
irb(main):001:0> a=`gem env`
=> "RubyGems Environment:\n - RUBYGEMS VERSION: 1.3.1\n - RUBY
VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]\n -
INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8\n - RUBY EXECUTABLE:
/usr/bin/ruby1.8\n - EXECUTABLE DIRECTORY: /usr/bin\n - RUBYGEMS
PLATFORMS:\n - ruby\n - x86-linux\n - GEM PATHS:\n -
/usr/lib/ruby/gems/1.8\n - /home/tomc/.gem/ruby/1.8\n - GEM
CONFIGURATION:\n - :update_sources=> true\n - :verbose =>
true\n - :benchmark => false\n - :backtrace => false\n -
:bulk_threshold => 1000\n - REMOTE SOURCES:\n -
http://gems.rubyforge.org/\n"
irb(main):002:0>
I leave it to you to get the code to have StringScanner find and
return the path. Somehow I keep thinking regular expressions might be
helpful here, but I dare not there. I think I hear the ice cracking
already.
t.