aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/plugin/locator.rb
diff options
context:
space:
mode:
authorrick <technoweenie@gmail.com>2008-06-08 14:04:04 -0400
committerrick <technoweenie@gmail.com>2008-06-08 14:04:04 -0400
commitfaad1e32a8ab81890018ba89d191607778830cf0 (patch)
treea7d07b839fae5004fac164cdceb9d76b9a568af2 /railties/lib/rails/plugin/locator.rb
parent138adbf156905f5cc6669ba33dd94802c82514d9 (diff)
downloadrails-faad1e32a8ab81890018ba89d191607778830cf0.tar.gz
rails-faad1e32a8ab81890018ba89d191607778830cf0.tar.bz2
rails-faad1e32a8ab81890018ba89d191607778830cf0.zip
Fix discrepancies with loading rails/init.rb from gems. [#324 state:resolved]
Diffstat (limited to 'railties/lib/rails/plugin/locator.rb')
-rw-r--r--railties/lib/rails/plugin/locator.rb7
1 files changed, 4 insertions, 3 deletions
diff --git a/railties/lib/rails/plugin/locator.rb b/railties/lib/rails/plugin/locator.rb
index f06a51a572..79c07fccd1 100644
--- a/railties/lib/rails/plugin/locator.rb
+++ b/railties/lib/rails/plugin/locator.rb
@@ -78,8 +78,9 @@ module Rails
# a <tt>rails/init.rb</tt> file.
class GemLocator < Locator
def plugins
- specs = initializer.configuration.gems.map(&:specification)
- specs += Gem.loaded_specs.values.select do |spec|
+ gem_index = initializer.configuration.gems.inject({}) { |memo, gem| memo.update gem.specification => gem }
+ specs = gem_index.keys
+ specs += Gem.loaded_specs.values.select do |spec|
spec.loaded_from && # prune stubs
File.exist?(File.join(spec.full_gem_path, "rails", "init.rb"))
end
@@ -91,7 +92,7 @@ module Rails
deps.add(*specs) unless specs.empty?
deps.dependency_order.collect do |spec|
- Rails::GemPlugin.new(spec)
+ Rails::GemPlugin.new(spec, gem_index[spec])
end
end
end