Class: Rails::Engine::Configuration

Inherits:
Railtie::Configuration show all
Defined in:
lib/rails/engine/configuration.rb

Direct Known Subclasses

Application::Configuration

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Railtie::Configuration

#after_initialize, #after_routes_loaded, #app_generators, #app_middleware, #before_configuration, #before_eager_load, #before_initialize, #eager_load_namespaces, eager_load_namespaces, #respond_to?, #to_prepare, #to_prepare_blocks, #watchable_dirs, #watchable_files

Constructor Details

#initialize(root = nil) ⇒ Configuration

Returns a new instance of Configuration.



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rails/engine/configuration.rb', line 41

def initialize(root = nil)
  super()
  @root = root
  @generators = app_generators.dup
  @middleware = Rails::Configuration::MiddlewareStackProxy.new
  @javascript_path = "javascript"
  @route_set_class = ActionDispatch::Routing::RouteSet
  @default_scope = nil

  @autoload_paths = []
  @autoload_once_paths = []
  @eager_load_paths = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Rails::Railtie::Configuration

Instance Attribute Details

#autoload_once_paths ⇒ Object

An array of custom autoload once paths. These won't be eager loaded unless you push them to eager_load_paths too, which is recommended.

This collection is empty by default, it accepts strings and Pathname objects.

If you'd like to add lib to it, please see autoload_lib_once.



29
30
31
# File 'lib/rails/engine/configuration.rb', line 29

def autoload_once_paths
  @autoload_once_paths
end

#autoload_paths ⇒ Object

An array of custom autoload paths to be added to the ones defined automatically by Rails. These won't be eager loaded, unless you push them to eager_load_paths too, which is recommended.

This collection is empty by default, it accepts strings and Pathname objects.

If you'd like to add lib to it, please see autoload_lib.



20
21
22
# File 'lib/rails/engine/configuration.rb', line 20

def autoload_paths
  @autoload_paths
end

#default_scope ⇒ Object

Returns the value of attribute default_scope.



9
10
11
# File 'lib/rails/engine/configuration.rb', line 9

def default_scope
  @default_scope
end

#eager_load_paths ⇒ Object

An array of custom eager load paths to be added to the ones defined automatically by Rails. Anything in this collection is considered to be an autoload path regardless of whether it was added to autoload_paths.

This collection is empty by default, it accepts strings and Pathname objects.

If you'd like to add lib to it, please see autoload_lib.



39
40
41
# File 'lib/rails/engine/configuration.rb', line 39

def eager_load_paths
  @eager_load_paths
end

#javascript_path ⇒ Object

Returns the value of attribute javascript_path.



9
10
11
# File 'lib/rails/engine/configuration.rb', line 9

def javascript_path
  @javascript_path
end

#middleware ⇒ Object

Returns the value of attribute middleware.



9
10
11
# File 'lib/rails/engine/configuration.rb', line 9

def middleware
  @middleware
end

#root ⇒ Object

Returns the value of attribute root.



8
9
10
# File 'lib/rails/engine/configuration.rb', line 8

def root
  @root
end

#route_set_class ⇒ Object

Returns the value of attribute route_set_class.



9
10
11
# File 'lib/rails/engine/configuration.rb', line 9

def route_set_class
  @route_set_class
end

Instance Method Details

#all_autoload_once_paths ⇒ Object

Private method that adds custom autoload once paths to the ones defined by paths.



127
128
129
# File 'lib/rails/engine/configuration.rb', line 127

def all_autoload_once_paths # :nodoc:
  autoload_once_paths + paths.autoload_once
end

#all_autoload_paths ⇒ Object

Private method that adds custom autoload paths to the ones defined by paths.



121
122
123
# File 'lib/rails/engine/configuration.rb', line 121

def all_autoload_paths # :nodoc:
  autoload_paths + paths.autoload_paths
end

#all_eager_load_paths ⇒ Object

Private method that adds custom eager load paths to the ones defined by paths.



133
134
135
# File 'lib/rails/engine/configuration.rb', line 133

def all_eager_load_paths # :nodoc:
  eager_load_paths + paths.eager_load
end

#generators {|@generators| ... } ⇒ Object

Holds generators configuration:

config.generators do |g|
g.orm             :data_mapper, migration: true
g.template_engine :haml
g.test_framework  :rspec
end

If you want to disable color in console, do:

config.generators.colorize_logging = false

Yields:



67
68
69
70
71
# File 'lib/rails/engine/configuration.rb', line 67

def generators
  @generators ||= Rails::Configuration::Generators.new
  yield(@generators) if block_given?
  @generators
end

#paths ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/rails/engine/configuration.rb', line 73

def paths
  @paths ||= begin
    paths = Rails::Paths::Root.new(@root)

    paths.add "app",                 eager_load: true,
                                     glob: "{*,*/concerns}",
                                     exclude: ["assets", javascript_path]
    paths.add "app/assets",          glob: "*"
    paths.add "app/controllers",     eager_load: true
    paths.add "app/channels",        eager_load: true
    paths.add "app/helpers",         eager_load: true
    paths.add "app/models",          eager_load: true
    paths.add "app/mailers",         eager_load: true
    paths.add "app/views"

    # If you add more lib subdirectories here that should not be managed
    # by the main autoloader, please update the config.autoload_lib call
    # in the template that generates config/application.rb accordingly.
    paths.add "lib",                 load_path: true
    paths.add "lib/assets",          glob: "*"
    paths.add "lib/tasks",           glob: "**/*.rake"

    paths.add "config"
    paths.add "config/environments", glob: -"#{Rails.env}.rb"
    paths.add "config/initializers", glob: "**/*.rb"
    paths.add "config/locales",      glob: "**/*.{rb,yml}"
    paths.add "config/routes.rb"
    paths.add "config/routes",       glob: "**/*.rb"

    paths.add "db"
    paths.add "db/migrate"
    paths.add "db/seeds.rb"

    paths.add "vendor",              load_path: true
    paths.add "vendor/assets",       glob: "*"

    paths.add "test/mailers/previews", autoload: true

    paths
  end
end