aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorMatt Jones <al2o3cr@gmail.com>2009-03-01 11:53:58 +0000
committerPratik Naik <pratiknaik@gmail.com>2009-03-01 11:53:58 +0000
commita3ac1e1621506a6519b265ef6ec6abc70f6c8a27 (patch)
tree21770cd0ac52bfb034da9195b412236ddb893176 /railties
parent3b169cd693f45911ee71e26708fb9267811c8d83 (diff)
downloadrails-a3ac1e1621506a6519b265ef6ec6abc70f6c8a27.tar.gz
rails-a3ac1e1621506a6519b265ef6ec6abc70f6c8a27.tar.bz2
rails-a3ac1e1621506a6519b265ef6ec6abc70f6c8a27.zip
Display gem dependencies correctly and unpack exactly once [#2097 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/gem_dependency.rb11
-rw-r--r--railties/lib/tasks/gems.rake7
-rw-r--r--railties/test/gem_dependency_test.rb2
3 files changed, 11 insertions, 9 deletions
diff --git a/railties/lib/rails/gem_dependency.rb b/railties/lib/rails/gem_dependency.rb
index 5a07841be8..2dd659032f 100644
--- a/railties/lib/rails/gem_dependency.rb
+++ b/railties/lib/rails/gem_dependency.rb
@@ -72,13 +72,14 @@ module Rails
rescue Gem::LoadError
end
- def dependencies
- return [] if framework_gem?
- return [] if specification.nil?
+ def dependencies(options = {})
+ return [] if framework_gem? || specification.nil?
+
all_dependencies = specification.dependencies.map do |dependency|
GemDependency.new(dependency.name, :requirement => dependency.version_requirements)
end
- all_dependencies += all_dependencies.map(&:dependencies).flatten
+
+ all_dependencies += all_dependencies.map { |d| d.dependencies(options) }.flatten if options[:flatten]
all_dependencies.uniq
end
@@ -149,6 +150,8 @@ module Rails
end
def unpack_to(directory)
+ return if specification.nil? || File.directory?(gem_dir(directory)) || framework_gem?
+
FileUtils.mkdir_p directory
Dir.chdir directory do
Gem::GemRunner.new.run(unpack_command)
diff --git a/railties/lib/tasks/gems.rake b/railties/lib/tasks/gems.rake
index d538e52ca6..0932ba73b5 100644
--- a/railties/lib/tasks/gems.rake
+++ b/railties/lib/tasks/gems.rake
@@ -47,8 +47,8 @@ namespace :gems do
require 'rubygems'
require 'rubygems/gem_runner'
Rails.configuration.gems.each do |gem|
- next unless !gem.frozen? && (ENV['GEM'].blank? || ENV['GEM'] == gem.name)
- gem.unpack_to(Rails::GemDependency.unpacked_path) if gem.loaded?
+ next unless ENV['GEM'].blank? || ENV['GEM'] == gem.name
+ gem.unpack_to(Rails::GemDependency.unpacked_path)
end
end
@@ -59,8 +59,7 @@ namespace :gems do
require 'rubygems/gem_runner'
Rails.configuration.gems.each do |gem|
next unless ENV['GEM'].blank? || ENV['GEM'] == gem.name
- gem.dependencies.each do |dependency|
- next if dependency.frozen?
+ gem.dependencies(:flatten => true).each do |dependency|
dependency.unpack_to(Rails::GemDependency.unpacked_path)
end
end
diff --git a/railties/test/gem_dependency_test.rb b/railties/test/gem_dependency_test.rb
index 9cb02fcd06..8b761c48b2 100644
--- a/railties/test/gem_dependency_test.rb
+++ b/railties/test/gem_dependency_test.rb
@@ -133,7 +133,7 @@ class GemDependencyTest < Test::Unit::TestCase
dummy_gem.add_load_paths
dummy_gem.load
assert dummy_gem.loaded?
- assert_equal 2, dummy_gem.dependencies.size
+ assert_equal 2, dummy_gem.dependencies(:flatten => true).size
assert_nothing_raised do
dummy_gem.dependencies.each do |g|
g.dependencies