aboutsummaryrefslogtreecommitdiffstats
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
parente0bdc4f446686a498c3117e27ed8561f5c6d34f1 (diff)
downloadrails-37e4deb2606557e5340b48169ffc1435bb331439.tar.gz
rails-37e4deb2606557e5340b48169ffc1435bb331439.tar.bz2
rails-37e4deb2606557e5340b48169ffc1435bb331439.zip
Ensure helpers work from configured path.
-rw-r--r--actionpack/lib/action_controller/base.rb2
-rw-r--r--actionpack/lib/action_controller/metal/helpers.rb18
-rw-r--r--railties/lib/rails/application.rb2
-rw-r--r--railties/lib/rails/engine/configuration.rb1
4 files changed, 12 insertions, 11 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
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index a8ff125342..90118c8cfc 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -11,8 +11,6 @@ module Rails
autoload :Railties, 'rails/application/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
- # TODO Check helpers works as expected
- # TODO Check routes namespaces
# TODO Ensure production settings are read properly
class << self
private :new
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index e2fdf125d3..93afdcf911 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -15,6 +15,7 @@ module Rails
paths = Rails::Paths::Root.new(@root)
paths.app "app", :eager_load => true, :glob => "*"
paths.app.controllers "app/controllers", :eager_load => true
+ paths.app.helpers "app/helpers", :eager_load => true
paths.app.metals "app/metal", :eager_load => true
paths.app.views "app/views"
paths.lib "lib", :load_path => true