railtie.rb 1.7 KB
Newer Older
1
require "rails"
2
require "action_controller"
3
require "action_dispatch/railtie"
4
require "action_view/railtie"
5
require "abstract_controller/railties/routes_helpers"
6
require "action_controller/railties/paths"
7

8
module ActionController
C
Carl Lerche 已提交
9
  class Railtie < Rails::Railtie
10
    config.action_controller = ActiveSupport::OrderedOptions.new
11

12 13
    initializer "action_controller.logger" do
      ActiveSupport.on_load(:action_controller) { self.logger ||= Rails.logger }
14
    end
15

16 17
    initializer "action_controller.initialize_framework_caches" do
      ActiveSupport.on_load(:action_controller) { self.cache_store ||= RAILS_CACHE }
18
    end
19

J
José Valim 已提交
20
    initializer "action_controller.set_configs" do |app|
21 22 23
      paths   = app.config.paths
      options = app.config.action_controller

24 25 26 27
      options.assets_dir           ||= paths["public"].first
      options.javascripts_dir      ||= paths["public/javascripts"].first
      options.stylesheets_dir      ||= paths["public/stylesheets"].first
      options.page_cache_directory ||= paths["public"].first
28

29
      # make sure readers methods get compiled
J
José Valim 已提交
30 31
      options.asset_path           ||= app.config.asset_path
      options.asset_host           ||= app.config.asset_host
32
      options.relative_url_root    ||= app.config.relative_url_root
33

34
      ActiveSupport.on_load(:action_controller) do
35
        include app.routes.mounted_helpers
36 37
        extend ::AbstractController::Railties::RoutesHelpers.with(app.routes)
        extend ::ActionController::Railties::Paths.with(app)
38
        options.each { |k,v| send("#{k}=", v) }
39
      end
J
José Valim 已提交
40
    end
41

42
    initializer "action_controller.compile_config_methods" do
43
      ActiveSupport.on_load(:action_controller) do
44
        config.compile_methods! if config.respond_to?(:compile_methods!)
45 46
      end
    end
47
  end
P
Piotr Sarnacki 已提交
48
end