From cbac50bb6b519aea84767b1d7743fe373cf5ecda Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Jos=C3=A9=20Valim?= Date: Fri, 16 May 2008 18:43:29 +0200 Subject: [PATCH] Added :environment to gem.config, to specify in which environment the gem should be loaded --- railties/environments/environment.rb | 3 ++- railties/lib/rails/gem_dependency.rb | 7 ++++--- railties/test/gem_dependency_test.rb | 21 ++++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/railties/environments/environment.rb b/railties/environments/environment.rb index c33b80d..356c2a7 100644 --- a/railties/environments/environment.rb +++ b/railties/environments/environment.rb @@ -25,6 +25,7 @@ Rails::Initializer.run do |config| # config.gem "bj" # config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net" # config.gem "aws-s3", :lib => "aws/s3" + # config.gem "ruby-debug", :environment => [:development, :test] # Only load the plugins named here, in the order given. By default, all plugins # in vendor/plugins are loaded in alphabetical order. @@ -64,4 +65,4 @@ Rails::Initializer.run do |config| # Activate observers that should always be running # config.active_record.observers = :cacher, :garbage_collector -end \ No newline at end of file +end diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb index 2034841..e4d028e 100644 --- a/railties/lib/rails/gem_dependency.rb +++ b/railties/lib/rails/gem_dependency.rb @@ -1,6 +1,6 @@ module Rails class GemDependency - attr_accessor :name, :requirement, :version, :lib, :source + attr_accessor :name, :requirement, :version, :lib, :source, :environment def self.unpacked_path @unpacked_path ||= File.join(RAILS_ROOT, 'vendor', 'gems') @@ -20,11 +20,12 @@ module Rails @lib = options[:lib] @source = options[:source] @loaded = @frozen = @load_paths_added = false + @environment = Array(options[:environment]).map(&:to_sym) if options[:environment] @unpack_directory = nil end def add_load_paths - return if @loaded || @load_paths_added + return if @loaded || @load_paths_added || (@environment && @environment.include?(ENV['RAILS_ENV'].to_sym)) unpacked_paths = Dir[File.join(self.class.unpacked_path, "#{@name}-#{@version || "*"}")] if unpacked_paths.empty? args = [@name] @@ -114,4 +115,4 @@ private ################################################################### cmd end end -end \ No newline at end of file +end diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb index 3ae0189..6a21340 100644 --- a/railties/test/gem_dependency_test.rb +++ b/railties/test/gem_dependency_test.rb @@ -1,4 +1,5 @@ require 'plugin_test_helper' +ENV['RAILS_ENV'] = 'test' class Rails::GemDependency public :install_command, :unpack_command @@ -10,7 +11,8 @@ uses_mocha "Plugin Tests" do @gem = Rails::GemDependency.new "hpricot" @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_lib = Rails::GemDependency.new "aws-s3", :lib => "aws/s3" + @gem_with_environment = Rails::GemDependency.new "ruby-debug", :environment => [:development, :test] end def test_configuration_adds_gem_dependency @@ -43,7 +45,20 @@ uses_mocha "Plugin Tests" do @gem.expects(:gem).with(@gem.name) @gem.add_load_paths end - + + def test_gem_with_environment_adds_load_paths + @gem_with_environment.expects(:gem).with(@gem_with_environment.name).once + + ENV['RAILS_ENV'] = 'test' + assert_nil @gem_with_environment.add_load_paths + + ENV['RAILS_ENV'] = 'development' + assert_nil @gem_with_environment.add_load_paths + + ENV['RAILS_ENV'] = 'production' + @gem_with_environment.add_load_paths + end + def test_gem_with_version_adds_load_paths @gem_with_version.expects(:gem).with(@gem_with_version.name, @gem_with_version.requirement.to_s) @gem_with_version.add_load_paths @@ -63,4 +78,4 @@ uses_mocha "Plugin Tests" do @gem_with_lib.load end end -end \ No newline at end of file +end -- 1.5.2.5