aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/plugin.rb
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-11-02 17:19:03 -0800
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-11-05 14:44:29 -0800
commit897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6 (patch)
treebc4d889eb2df4bb6e22650abe651f6d9ac2d3e27 /railties/lib/rails/plugin.rb
parent6c59e5a558922b8f4084533071c3d93e151858ac (diff)
downloadrails-897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6.tar.gz
rails-897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6.tar.bz2
rails-897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6.zip
Conceptually unify instance & global initializers
Diffstat (limited to 'railties/lib/rails/plugin.rb')
-rw-r--r--railties/lib/rails/plugin.rb99
1 files changed, 51 insertions, 48 deletions
diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb
index 1c0af6411a..090ec6e4cb 100644
--- a/railties/lib/rails/plugin.rb
+++ b/railties/lib/rails/plugin.rb
@@ -18,6 +18,7 @@ module Rails
# plugin.about["url"] # => "http://interblah.net"
class Plugin
include Comparable
+ include Initializable
attr_reader :directory, :name
@@ -99,67 +100,69 @@ module Rails
def locale_files
Dir[ File.join(locale_path, '*.{rb,yml}') ]
end
-
- private
- def load_about_information
- about_yml_path = File.join(@directory, "about.yml")
- parsed_yml = File.exist?(about_yml_path) ? YAML.load(File.read(about_yml_path)) : {}
- parsed_yml || {}
- rescue Exception
- {}
- end
+ private
+ def load_about_information
+ about_yml_path = File.join(@directory, "about.yml")
+ parsed_yml = File.exist?(about_yml_path) ? YAML.load(File.read(about_yml_path)) : {}
+ parsed_yml || {}
+ rescue Exception
+ {}
+ end
- def report_nonexistant_or_empty_plugin!
- raise LoadError, "Can not find the plugin named: #{name}"
- end
+ def report_nonexistant_or_empty_plugin!
+ raise LoadError, "Can not find the plugin named: #{name}"
+ end
-
- def app_paths
- [ File.join(directory, 'app', 'models'), File.join(directory, 'app', 'helpers'), controller_path, metal_path ]
- end
-
- def lib_path
- File.join(directory, 'lib')
- end
+ def app_paths
+ [ File.join(directory, 'app', 'models'), File.join(directory, 'app', 'helpers'), controller_path, metal_path ]
+ end
- def classic_init_path
- File.join(directory, 'init.rb')
- end
+ def lib_path
+ File.join(directory, 'lib')
+ end
- def gem_init_path
- File.join(directory, 'rails', 'init.rb')
- end
+ def classic_init_path
+ File.join(directory, 'init.rb')
+ end
- def init_path
- File.file?(gem_init_path) ? gem_init_path : classic_init_path
- end
+ def gem_init_path
+ File.join(directory, 'rails', 'init.rb')
+ end
+ def init_path
+ File.file?(gem_init_path) ? gem_init_path : classic_init_path
+ end
- def has_app_directory?
- File.directory?(File.join(directory, 'app'))
- end
+ def has_app_directory?
+ File.directory?(File.join(directory, 'app'))
+ end
- def has_lib_directory?
- File.directory?(lib_path)
- end
+ def has_lib_directory?
+ File.directory?(lib_path)
+ end
- def has_init_file?
- File.file?(init_path)
- end
+ def has_init_file?
+ File.file?(init_path)
+ end
+ def evaluate_init_rb(initializer)
+ if has_init_file?
+ require 'active_support/core_ext/kernel/reporting'
+ silence_warnings do
+ # Allow plugins to reference the current configuration object
+ config = initializer.configuration
- def evaluate_init_rb(initializer)
- if has_init_file?
- require 'active_support/core_ext/kernel/reporting'
- silence_warnings do
- # Allow plugins to reference the current configuration object
- config = initializer.configuration
-
- eval(IO.read(init_path), binding, init_path)
- end
+ eval(IO.read(init_path), binding, init_path)
end
- end
+ end
+ end
+
+ class Vendored < Plugin
+ initializer :init_rb do |application|
+ evaluate_init_rb(application)
+ end
+ end
end
# This Plugin subclass represents a Gem plugin. Although RubyGems has already