From 8f408c1349e10c6866baa06f473ba4648312d372 Mon Sep 17 00:00:00 2001 From: Andreas Fuchs Date: Sat, 7 Jun 2008 13:32:53 +0200 Subject: [PATCH] Add a gem's bin directory to the load path as well. This affects gems like rmagick, which put files there in addition to their ext/ dir. --- railties/lib/rails/gem_dependency.rb | 11 ++++++++--- railties/test/gem_dependency_test.rb | 8 ++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index 9f088a1..100da81 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -31,9 +31,9 @@ module Rails args << @requirement.to_s if @requirement gem *args else - $LOAD_PATH.unshift File.join(unpacked_paths.first, 'lib') - ext = File.join(unpacked_paths.first, 'ext') - $LOAD_PATH.unshift(ext) if File.exist?(ext) + add_load_path(unpacked_paths.first, 'lib') + add_load_path(unpacked_paths.first, 'ext') + add_load_path(unpacked_paths.first, 'bin') @frozen = true end @load_paths_added = true @@ -120,5 +120,10 @@ private ################################################################### cmd << "--version" << "#{@requirement.to_s}" if @requirement cmd end + + def add_load_path(paths, dirname) + dir = File.join(paths, dirname) + $LOAD_PATH.unshift(dir) if File.exist?(dir) + end end end \ No newline at end of file diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index 3ae0189..f066c14 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -11,6 +11,7 @@ uses_mocha "Plugin Tests" do @gem_with_source = Rails::GemDependency.new "hpricot", :source => "http://code.whytheluckystiff.net" @gem_with_version = Rails::GemDependency.new "hpricot", :version => "= 0.6" @gem_with_lib = Rails::GemDependency.new "aws-s3", :lib => "aws/s3" + @gem_with_bin = Rails::GemDependency.new "rmagick", :lib => 'RMagick' end def test_configuration_adds_gem_dependency @@ -62,5 +63,12 @@ uses_mocha "Plugin Tests" do @gem_with_lib.add_load_paths @gem_with_lib.load end + + def test_gem_with_bin_loading + @gem_with_bin.expects(:gem).with(@gem_with_bin.name) + @gem_with_bin.expects(:require).with(@gem_with_bin.lib) + @gem_with_bin.add_load_paths + @gem_with_bin.load + end end end \ No newline at end of file -- 1.5.5