aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-24 12:04:37 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-24 12:04:37 +0100
commit37e4deb2606557e5340b48169ffc1435bb331439 (patch)
treebca542b9bf9be6888f9a444efa4aac4a7be6d968 /actionpack
parente0bdc4f446686a498c3117e27ed8561f5c6d34f1 (diff)
downloadrails-37e4deb2606557e5340b48169ffc1435bb331439.tar.gz
rails-37e4deb2606557e5340b48169ffc1435bb331439.tar.bz2
rails-37e4deb2606557e5340b48169ffc1435bb331439.zip
Ensure helpers work from configured path.
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/base.rb2
-rw-r--r--actionpack/lib/action_controller/metal/helpers.rb18
2 files changed, 11 insertions, 9 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index f46231d72b..215b70734c 100644
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -7,7 +7,6 @@ module ActionController
include AbstractController::Translation
include ActionController::Helpers
- helper :all # By default, all helpers should be included
include ActionController::HideActions
include ActionController::UrlFor
@@ -67,6 +66,7 @@ module ActionController
def self.inherited(klass)
::ActionController::Base.subclasses << klass.to_s
super
+ klass.helper :all
end
def self.subclasses
diff --git a/actionpack/lib/action_controller/metal/helpers.rb b/actionpack/lib/action_controller/metal/helpers.rb
index 24f8cb8a57..757ce3c319 100644
--- a/actionpack/lib/action_controller/metal/helpers.rb
+++ b/actionpack/lib/action_controller/metal/helpers.rb
@@ -50,11 +50,8 @@ module ActionController
include AbstractController::Helpers
included do
- # Set the default directory for helpers
- # TODO This should support multiple directories in order
- # to work with engines
- extlib_inheritable_accessor(:helpers_dir) do
- defined?(Rails.root) ? "#{Rails.root}/app/helpers" : "app/helpers"
+ extlib_inheritable_accessor(:helpers_path) do
+ defined?(Rails::Application) ? Rails::Application.paths.app.helpers.to_a : []
end
end
@@ -107,10 +104,15 @@ module ActionController
raise e unless e.missing_name? "#{module_name}Helper"
end
- # Extract helper names from files in app/helpers/**/*.rb
+ # Extract helper names from files in app/helpers/**/*_helper.rb
def all_application_helpers
- extract = /^#{Regexp.quote(helpers_dir)}\/?(.*)_helper.rb$/
- Dir["#{helpers_dir}/**/*_helper.rb"].map { |file| file.sub extract, '\1' }
+ helpers = []
+ helpers_path.each do |path|
+ extract = /^#{Regexp.quote(path)}\/?(.*)_helper.rb$/
+ helpers += Dir["#{path}/**/*_helper.rb"].map { |file| file.sub(extract, '\1') }
+ end
+ helpers.uniq!
+ helpers
end
end
end