diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2010-01-28 19:46:17 +0000 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2010-01-28 19:46:17 +0000 |
commit | 285361d1589002fcdd1584c07e6eb295f13c9f37 (patch) | |
tree | 2d50a69b3b59b6fb3cb7577b990fe3b1aaf58f4f /railties/lib/rails/railtie.rb | |
parent | dfa19408651ecc82e2aeba95d93db871ba8a6e41 (diff) | |
parent | d58398c2b5e98aad18dc72790230f338c10d145c (diff) | |
download | rails-285361d1589002fcdd1584c07e6eb295f13c9f37.tar.gz rails-285361d1589002fcdd1584c07e6eb295f13c9f37.tar.bz2 rails-285361d1589002fcdd1584c07e6eb295f13c9f37.zip |
Merge remote branch 'mainstream/master'
Conflicts:
railties/lib/rails/railtie.rb
Diffstat (limited to 'railties/lib/rails/railtie.rb')
-rw-r--r-- | railties/lib/rails/railtie.rb | 83 |
1 files changed, 44 insertions, 39 deletions
diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb index 611688cef1..2dc2ba1002 100644 --- a/railties/lib/rails/railtie.rb +++ b/railties/lib/rails/railtie.rb @@ -1,3 +1,6 @@ +require 'rails/initializable' +require 'rails/configuration' + module Rails # Railtie is the core of the Rails Framework and provides all the hooks and # methods you need to link your plugin into Rails. @@ -108,52 +111,56 @@ module Rails # gem "my_gem", :require_as => ["my_gem", "my_gem/railtie"] # class Railtie + autoload :Configurable, "rails/railtie/configurable" + autoload :Configuration, "rails/railtie/configuration" + include Initializable - # Pass in the name of your plugin. This is passed in as an underscored symbol. - # - # module MyPlugin - # class Railtie < Rails::Railtie - # plugin_name :my_plugin - # end - # end - def self.plugin_name(plugin_name = nil) - @plugin_name ||= name.demodulize.underscore - @plugin_name = plugin_name if plugin_name - @plugin_name - end + ABSTRACT_RAILTIES = %w(Rails::Plugin Rails::Engine Rails::Application) - def self.inherited(klass) - @plugins ||= [] - @plugins << klass unless klass == Plugin - end + class << self + def subclasses + @subclasses ||= [] + end - def self.plugins - @plugins - end + def inherited(base) + unless abstract_railtie?(base) + base.send(:include, self::Configurable) + subclasses << base + end + end - def self.plugin_names - plugins.map { |p| p.plugin_name } - end + def railtie_name(railtie_name = nil) + @railtie_name ||= name.demodulize.underscore + @railtie_name = railtie_name if railtie_name + @railtie_name + end - def self.config - Configuration.default - end + def railtie_names + subclasses.map { |p| p.railtie_name } + end - def self.subscriber(subscriber) - Rails::Subscriber.add(plugin_name, subscriber) - end + def subscriber(subscriber) + Rails::Subscriber.add(railtie_name, subscriber) + end - def self.rake_tasks(&blk) - @rake_tasks ||= [] - @rake_tasks << blk if blk - @rake_tasks - end + def rake_tasks(&blk) + @rake_tasks ||= [] + @rake_tasks << blk if blk + @rake_tasks + end + + def generators(&blk) + @generators ||= [] + @generators << blk if blk + @generators + end + + protected - def self.generators(&blk) - @generators ||= [] - @generators << blk if blk - @generators + def abstract_railtie?(base) + ABSTRACT_RAILTIES.include?(base.name) + end end def rake_tasks @@ -165,12 +172,10 @@ module Rails end def load_tasks - return unless rake_tasks rake_tasks.each { |blk| blk.call } end def load_generators - return unless generators generators.each { |blk| blk.call } end end |