123456789_123456789_123456789_123456789_123456789_

Class: Rails::Railtie::Configuration

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: Object
Defined in: railties/lib/rails/railtie/configuration.rb

Class Method Summary

Instance Method Summary

Constructor Details

.newConfiguration

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 8

def initialize
  @@options ||= {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &blk) (private)

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 99

def method_missing(name, *args, &blk)
  if name.end_with?("=")
    key = name[0..-2].to_sym
    if actual_method?(key)
      raise NoMethodError.new("Cannot assign to `#{key}`, it is a configuration method")
    end
    @@options[key] = args.first
  elsif @@options.key?(name)
    @@options[name]
  else
    super
  end
end

Instance Method Details

#after_initialize(&block)

Last configurable block to run. Called after frameworks initialize.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 70

def after_initialize(&block)
  ActiveSupport.on_load(:after_initialize, yield: true, &block)
end

#after_routes_loaded(&block)

Called after application routes have been loaded.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 75

def after_routes_loaded(&block)
  ActiveSupport.on_load(:after_routes_loaded, yield: true, &block)
end

#app_generators {|@@app_generators| ... }

This allows you to modify application’s generators from Railties.

Values set on app_generators will become defaults for application, unless application overwrites them.

Yields:

  • (@@app_generators)
[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 47

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

#app_middleware

This allows you to modify the application’s middlewares from Engines.

All operations you run on the app_middleware will be replayed on the application once it is defined and the default_middlewares are created

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 39

def app_middleware
  @@app_middleware ||= Rails::Configuration::MiddlewareStackProxy.new
end

#before_configuration(&block)

First configurable block to run. Called before any initializers are run.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 54

def before_configuration(&block)
  ActiveSupport.on_load(:before_configuration, yield: true, &block)
end

#before_eager_load(&block)

Third configurable block to run. Does not run if config.eager_load set to false.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 60

def before_eager_load(&block)
  ActiveSupport.on_load(:before_eager_load, yield: true, &block)
end

#before_initialize(&block)

Second configurable block to run. Called before frameworks initialize.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 65

def before_initialize(&block)
  ActiveSupport.on_load(:before_initialize, yield: true, &block)
end

#eager_load_namespaces

All namespaces that are eager loaded

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 18

def eager_load_namespaces
  @@eager_load_namespaces ||= []
end

#respond_to?(name, include_private = false) ⇒ Boolean

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 90

def respond_to?(name, include_private = false)
  super || @@options.key?(name.to_sym)
end

#to_prepare(&blk)

Defines generic callbacks to run before #after_initialize. Useful for ::Rails::Railtie subclasses.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 86

def to_prepare(&blk)
  to_prepare_blocks << blk if blk
end

#to_prepare_blocks

::Array of callbacks defined by #to_prepare.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 80

def to_prepare_blocks
  @@to_prepare_blocks ||= []
end

#watchable_dirs

Add directories that should be watched for change. The key of the hashes should be directories and the values should be an array of extensions to match in each directory.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 30

def watchable_dirs
  @@watchable_dirs ||= {}
end

#watchable_files

Add files that should be watched for change.

[ GitHub ]

  
# File 'railties/lib/rails/railtie/configuration.rb', line 23

def watchable_files
  @@watchable_files ||= []
end