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
# 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"

  @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

#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

Instance Method Details

#all_autoload_once_pathsObject

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



125
126
127
# File 'lib/rails/engine/configuration.rb', line 125

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.



119
120
121
# File 'lib/rails/engine/configuration.rb', line 119

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.



131
132
133
# File 'lib/rails/engine/configuration.rb', line 131

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:



65
66
67
68
69
# File 'lib/rails/engine/configuration.rb', line 65

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

#pathsObject



71
72
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
# File 'lib/rails/engine/configuration.rb', line 71

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