mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
e5af8b7d85
This change is needed, because we must take namespace into account and if controller's/mailer's class is namespaced, engine's paths should be set instead of application's ones. The nice side effect of this is removing unneeded logic in ActionController::Base.inherited - now the helpers_path should be set correctly even for engine's controllers, so helper(:all) will always include correct helpers.
28 lines
928 B
Ruby
28 lines
928 B
Ruby
module ActionController
|
|
module Railties
|
|
module Paths
|
|
def self.with(_app)
|
|
Module.new do
|
|
define_method(:inherited) do |klass|
|
|
super(klass)
|
|
if namespace = klass.parents.detect {|m| m.respond_to?(:_railtie) }
|
|
app = namespace._railtie
|
|
else
|
|
app = _app
|
|
end
|
|
|
|
paths = app.config.paths
|
|
options = app.config.action_controller
|
|
|
|
options.assets_dir ||= paths.public.to_a.first
|
|
options.javascripts_dir ||= paths.public.javascripts.to_a.first
|
|
options.stylesheets_dir ||= paths.public.stylesheets.to_a.first
|
|
options.page_cache_directory ||= paths.public.to_a.first
|
|
options.helpers_path ||= paths.app.helpers.to_a
|
|
options.each { |k,v| klass.send("#{k}=", v) }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|