From: Tom Cloyd Date: 2009-01-17T02:46:59+09:00 Subject: Re: RubyGem, find path of installed gem through ruby. Tom Cloyd wrote: > 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. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist Bellingham, Washington, U.S.A: (360) 920-1226 << tc@tomcloyd.com >> (email) << TomCloyd.com >> (website) << sleightmind.wordpress.com >> (mental health weblog) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~