From 60ca41eb394df300a9318e6f0a014d5acacbc25d Mon Sep 17 00:00:00 2001 From: Dmitriy Timokhin Date: Sun, 1 Jun 2008 08:40:41 +0400 Subject: [PATCH] Do not require default lib from gem if it is rails plugin. --- railties/lib/rails/gem_dependency.rb | 10 +++++++++- railties/test/gem_dependency_test.rb | 20 +++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index 9f088a1..d5bb6b1 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -54,7 +54,11 @@ module Rails def load return if @loaded || @load_paths_added == false - require(@lib || @name) + if @lib + require @lib + else + require @name unless plugin? + end @loaded = true rescue LoadError puts $!.to_s @@ -68,6 +72,10 @@ module Rails def loaded? @loaded end + + def plugin? + File.file?(File.join(specification.full_gem_path, 'rails', 'init.rb')) + end def load_paths_added? @load_paths_added diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index 3ae0189..a981f51 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -11,6 +11,10 @@ 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_plugin = Rails::GemDependency.new "gemified-acts_as_list" + @gem_plugin.stubs(:plugin?).returns(true) + @gem_plugin_with_lib = Rails::GemDependency.new "gemified-strange_plugin", :lib => 'strange' + @gem_plugin_with_lib.stubs(:plugin?).returns(true) end def test_configuration_adds_gem_dependency @@ -55,7 +59,21 @@ uses_mocha "Plugin Tests" do @gem.add_load_paths @gem.load end - + + def test_gem_plugin_loading + @gem_plugin.expects(:gem).with(@gem_plugin.name) + @gem_plugin.expects(:require).never + @gem_plugin.add_load_paths + @gem_plugin.load + end + + def test_gem_plugin_with_lib_loading + @gem_plugin_with_lib.expects(:gem).with(@gem_plugin_with_lib.name) + @gem_plugin_with_lib.expects(:require).with(@gem_plugin_with_lib.lib) + @gem_plugin_with_lib.add_load_paths + @gem_plugin_with_lib.load + end + def test_gem_with_lib_loading @gem_with_lib.expects(:gem).with(@gem_with_lib.name) @gem_with_lib.expects(:require).with(@gem_with_lib.lib) -- 1.5.5.1