From 72858e532ac3ca07efb6c8324629aabdb5369299 Mon Sep 17 00:00:00 2001 From: Lee Marlow Date: Thu, 10 Jul 2008 17:23:49 -0600 Subject: [PATCH] rework original patch to apply against HEAD as of feb08984ea original patch: http://rails.lighthouseapp.com/attachments/24199/complex_versions.diff --- railties/lib/rails/gem_dependency.rb | 10 ++++++++-- railties/test/gem_dependency_test.rb | 11 +++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index f8d9784..9483809 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -32,7 +32,8 @@ module Rails unpacked_paths = self.unpacked_paths if unpacked_paths.empty? args = [@name] - args << @requirement.to_s if @requirement + args << @requirement.as_list if @requirement + args.flatten! gem *args else $LOAD_PATH.unshift File.join(unpacked_paths.first, 'lib') @@ -120,8 +121,13 @@ module Rails def unpack_command cmd = %w(unpack) << @name - cmd << "--version" << %("#{@requirement.to_s}") if @requirement + cmd << "--version" << version_requirement if @requirement cmd end + + def version_requirement + selected = Gem::SourceIndex.from_installed_gems.search(/\A#{@name}\z/, @requirement).sort_by { |s| s.version }.last + selected.version.to_s + end end end diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index b5946aa..c12db65 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -18,6 +18,12 @@ uses_mocha "Plugin Tests" do config.gem "aws-s3", :lib => "aws/s3", :version => "0.4.0" assert_equal [["install", "aws-s3", "--version", '"= 0.4.0"']], config.gems.collect(&:install_command) end + + def test_configuration_with_complex_version + gem_with_complex_version = Rails::GemDependency.new "json", :version => ['>= 1.1.2', '< 1.1.3'] + gem_with_complex_version.expects(:gem).with("json", '>= 1.1.2', '< 1.1.3') + gem_with_complex_version.add_load_paths + end def test_gem_creates_install_command assert_equal %w(install hpricot), @gem.install_command @@ -35,8 +41,9 @@ uses_mocha "Plugin Tests" do assert_equal %w(unpack hpricot), @gem.unpack_command end - def test_gem_with_version_unpack_install_command - assert_equal ["unpack", "hpricot", "--version", '"= 0.6"'], @gem_with_version.unpack_command + def test_gem_with_version_unpack_command + @gem_with_version.expects(:version_requirement).returns("0.6") + assert_equal ["unpack", "hpricot", "--version", "0.6"], @gem_with_version.unpack_command end def test_gem_adds_load_paths -- 1.5.6.2.292.ga9a3