From c787bfdf932450c5fd4c0df805454aa40a388117 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 23 Jun 2010 16:10:26 +0200 Subject: Engine can now load its own plugins --- railties/lib/rails/engine/railties.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 railties/lib/rails/engine/railties.rb (limited to 'railties/lib/rails/engine/railties.rb') diff --git a/railties/lib/rails/engine/railties.rb b/railties/lib/rails/engine/railties.rb new file mode 100644 index 0000000000..389a7602c6 --- /dev/null +++ b/railties/lib/rails/engine/railties.rb @@ -0,0 +1,23 @@ +module Rails + class Engine < Railtie + class Railties + # TODO Write tests for this behavior extracted from Application + def initialize(config) + @config = config + end + + def all(&block) + @all ||= plugins + @all.each(&block) if block + @all + end + + def plugins + @plugins ||= begin + plugin_names = (@config.plugins || [:all]).map { |p| p.to_sym } + Plugin.all(plugin_names, @config.paths.vendor.plugins) + end + end + end + end +end -- cgit v1.2.3 From d649bf158be130515566aed987f83d36ac9b0ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 6 Oct 2010 17:18:59 +0200 Subject: Provide a cleaner syntax for paths configuration that does not rely on method_missing. --- railties/lib/rails/engine/railties.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails/engine/railties.rb') diff --git a/railties/lib/rails/engine/railties.rb b/railties/lib/rails/engine/railties.rb index 389a7602c6..e91bdbf1e5 100644 --- a/railties/lib/rails/engine/railties.rb +++ b/railties/lib/rails/engine/railties.rb @@ -15,7 +15,7 @@ module Rails def plugins @plugins ||= begin plugin_names = (@config.plugins || [:all]).map { |p| p.to_sym } - Plugin.all(plugin_names, @config.paths.vendor.plugins) + Plugin.all(plugin_names, @config.paths["vendor/plugins"].existent) end end end -- cgit v1.2.3 From 051127d4d38329238bb0b3587ef128f131174786 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 8 Dec 2010 23:15:13 +0100 Subject: Rails::Engine.find(path) - method to find engine by path --- railties/lib/rails/engine/railties.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'railties/lib/rails/engine/railties.rb') diff --git a/railties/lib/rails/engine/railties.rb b/railties/lib/rails/engine/railties.rb index e91bdbf1e5..d5ecd2e48d 100644 --- a/railties/lib/rails/engine/railties.rb +++ b/railties/lib/rails/engine/railties.rb @@ -18,6 +18,16 @@ module Rails Plugin.all(plugin_names, @config.paths["vendor/plugins"].existent) end end + + def self.railties + @railties ||= ::Rails::Railtie.subclasses.map(&:instance) + end + + def self.engines + @engines ||= ::Rails::Engine.subclasses.map(&:instance) + end + + delegate :railties, :engines, :to => "self.class" end end end -- cgit v1.2.3