aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/plugin/locator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/plugin/locator.rb')
-rw-r--r--railties/lib/rails/plugin/locator.rb21
1 files changed, 20 insertions, 1 deletions
diff --git a/railties/lib/rails/plugin/locator.rb b/railties/lib/rails/plugin/locator.rb
index b27e904b12..0b7923cfb6 100644
--- a/railties/lib/rails/plugin/locator.rb
+++ b/railties/lib/rails/plugin/locator.rb
@@ -72,7 +72,26 @@ module Rails
plugins
end
end
-
+ end
+
+ # The GemLocator scans all the loaded RubyGems, looking for gems with
+ # a <tt>rails/init.rb</tt> file.
+ class GemLocator < Locator
+ def plugins
+ 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
+
+ require "rubygems/dependency_list"
+
+ deps = Gem::DependencyList.new
+ deps.add(*specs)
+
+ deps.dependency_order.collect do |spec|
+ Rails::GemPlugin.new(spec)
+ end
+ end
end
end
end \ No newline at end of file