From a959fae036735dabfc856abcf58f522985e19605 Mon Sep 17 00:00:00 2001 From: David Waite Date: Tue, 2 Jun 2009 20:07:31 -0600 Subject: [PATCH] Add GEM_COMMAND environment variable, to allow for overriding the default choice for gem executable name. --- railties/lib/rails/gem_dependency.rb | 16 +++++++++------- railties/test/gem_dependency_test.rb | 10 ++++++++++ railties/test/test_script.rb | 5 +++++ 3 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 railties/test/test_script.rb diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index ee3d0d8..c11cf3e 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -256,13 +256,15 @@ module Rails private def gem_command - case RUBY_PLATFORM - when /win32/ - 'gem.bat' - when /java/ - 'jruby -S gem' - else - 'gem' + @gem_command ||= begin + ENV['GEM_COMMAND'] || case RUBY_PLATFORM + when /win32/ + 'gem.bat' + when /java/ + 'jruby -S gem' + else + 'gem' + end end end diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index 3853eb5..7f693ce 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -1,4 +1,5 @@ require 'plugin_test_helper' +require 'tmpdir' class Rails::GemDependency public :install_command, :unpack_command @@ -186,4 +187,13 @@ class GemDependencyTest < Test::Unit::TestCase assert_equal false, Rails::GemDependency.new("dummy-gem-j").built? end + def test_gem_environment_override + ENV['GEM_COMMAND'] = "#{ENV['_']} ./test_script.rb" + @gem = Rails::GemDependency.new "xhpricotx" + filename = Dir.tmpdir + '/test-script' + puts filename + File.delete(filename) rescue nil + @gem.install + assert_equal true, File.exists?(filename) + end end diff --git a/railties/test/test_script.rb b/railties/test/test_script.rb new file mode 100644 index 0000000..fe5a664 --- /dev/null +++ b/railties/test/test_script.rb @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby +require 'tmpdir' + +filename = Dir.tmpdir + '/test-script' +File.open(filename, 'w') { |f| f.write('successful') } -- 1.6.3.1