From: "Ara.T.Howard" Date: 2005-10-27T08:52:33+09:00 Subject: [GEM PATCH] allow gem to install bin file to different location SYNOPSIS this patch allows any value in Config::CONFIG to be altered from the command line when using gem. by altering a value, for example bindir, fine grained control can be affected during the installation proccess. here is the patch: PATCH jib:~ > diff -u gem.org gem --- gem.org 2005-10-26 14:51:53.000000000 -0600 +++ gem 2005-10-26 17:44:31.000000000 -0600 @@ -14,4 +14,16 @@ # it...its for the source building process. args = !ARGV.include?("--") ? ARGV.clone : ARGV[0...ARGV.index("--")] +# +# munge rbconfig from any command line or environment kv pair +# +kvs = [] +re = %r/^ \s* ([^=\s]+) \s* = \s* ([^\s]+) \s* $/x +args.delete_if{|arg| (m = re.match(arg)) and (kvs << m.to_a.last(2))} +ENV::each{|k,v| (k =~ %r/^GEM_/) and (kvs << [k.delete('GEM_'), v])} +unless kvs.empty? + require 'rbconfig' + kvs.each{|k,v| Config::CONFIG[k] = v} +end + Gem::GemRunner.new.run(args) EXAMPLE USAGE jib:~ > which rake which: no rake in ... jib: > ruby -r rbconfig -e'p Config::CONFIG["bindir"]' "/dmsp/reference/ruby-1.8.1//bin" jib: > gem install bindir=/dmsp/reference/bin rake Attempting local installation of 'rake' Local gem file not found: rake*.gem Attempting remote installation of 'rake' Successfully installed rake-0.6.2 Installing RDoc documentation for rake-0.6.2... jib: > which rake /dmsp/reference/bin/rake so anything value in Config::CONFIG can be replaced on the command line. configuration via the environment is also supported. so i could have done the above via jib: > export GEM_bindir=/dmsp/reference/bin jib: > gem install rake any env var starting with 'GEM_' is taken to be a key/val pair for Config::CONFIG. thoughts? -a -- =============================================================================== | email :: ara [dot] t [dot] howard [at] noaa [dot] gov | phone :: 303.497.6469 | anything that contradicts experience and logic should be abandoned. | -- h.h. the 14th dalai lama ===============================================================================