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_pathsObject

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_pathsObject

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_scopeObject

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_pathsObject

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_pathObject

Returns the value of attribute javascript_path.



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

def javascript_path
  @javascript_path
end

#middlewareObject

Returns the value of attribute middleware.



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

def middleware
  @middleware
end

#rootObject

Returns the value of attribute root.



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

def root
  @root
end

#route_set_classObject

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_pathsObject

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_pathsObject

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_pathsObject

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

#pathsObject



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