123456789_123456789_123456789_123456789_123456789_

Module: Rails

Relationships & Source Files
Namespace Children
Modules:
Classes:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Defined in: actioncable/lib/rails/generators/channel/channel_generator.rb,
actionmailbox/lib/rails/generators/mailbox/mailbox_generator.rb,
actionmailer/lib/rails/generators/mailer/mailer_generator.rb,
activejob/lib/rails/generators/job/job_generator.rb,
railties/lib/rails.rb,
railties/lib/rails/app_loader.rb,
railties/lib/rails/application.rb,
railties/lib/rails/autoloaders.rb,
railties/lib/rails/backtrace_cleaner.rb,
railties/lib/rails/code_statistics.rb,
railties/lib/rails/code_statistics_calculator.rb,
railties/lib/rails/command.rb,
railties/lib/rails/configuration.rb,
railties/lib/rails/deprecator.rb,
railties/lib/rails/dev_caching.rb,
railties/lib/rails/engine.rb,
railties/lib/rails/gem_version.rb,
railties/lib/rails/generators.rb,
railties/lib/rails/health_controller.rb,
railties/lib/rails/info.rb,
railties/lib/rails/initializable.rb,
railties/lib/rails/paths.rb,
railties/lib/rails/rack.rb,
railties/lib/rails/railtie.rb,
railties/lib/rails/source_annotation_extractor.rb,
railties/lib/rails/version.rb,
railties/lib/rails/api/task.rb,
railties/lib/rails/application/bootstrap.rb,
railties/lib/rails/application/configuration.rb,
railties/lib/rails/application/default_middleware_stack.rb,
railties/lib/rails/application/finisher.rb,
railties/lib/rails/application/routes_reloader.rb,
railties/lib/rails/autoloaders/inflector.rb,
railties/lib/rails/command/actions.rb,
railties/lib/rails/command/base.rb,
railties/lib/rails/command/behavior.rb,
railties/lib/rails/command/environment_argument.rb,
railties/lib/rails/command/helpers/editor.rb,
railties/lib/rails/commands/about/about_command.rb,
railties/lib/rails/commands/app/update_command.rb,
railties/lib/rails/commands/application/application_command.rb,
railties/lib/rails/commands/boot/boot_command.rb,
railties/lib/rails/commands/console/console_command.rb,
railties/lib/rails/commands/console/irb_console.rb,
railties/lib/rails/commands/credentials/credentials_command.rb,
railties/lib/rails/commands/db/system/change/change_command.rb,
railties/lib/rails/commands/dbconsole/dbconsole_command.rb,
railties/lib/rails/commands/destroy/destroy_command.rb,
railties/lib/rails/commands/dev/dev_command.rb,
railties/lib/rails/commands/devcontainer/devcontainer_command.rb,
railties/lib/rails/commands/encrypted/encrypted_command.rb,
railties/lib/rails/commands/gem_help/gem_help_command.rb,
railties/lib/rails/commands/generate/generate_command.rb,
railties/lib/rails/commands/help/help_command.rb,
railties/lib/rails/commands/initializers/initializers_command.rb,
railties/lib/rails/commands/middleware/middleware_command.rb,
railties/lib/rails/commands/new/new_command.rb,
railties/lib/rails/commands/notes/notes_command.rb,
railties/lib/rails/commands/plugin/plugin_command.rb,
railties/lib/rails/commands/rake/rake_command.rb,
railties/lib/rails/commands/restart/restart_command.rb,
railties/lib/rails/commands/routes/routes_command.rb,
railties/lib/rails/commands/runner/runner_command.rb,
railties/lib/rails/commands/secret/secret_command.rb,
railties/lib/rails/commands/server/server_command.rb,
railties/lib/rails/commands/stats/stats_command.rb,
railties/lib/rails/commands/test/test_command.rb,
railties/lib/rails/commands/unused_routes/unused_routes_command.rb,
railties/lib/rails/commands/version/version_command.rb,
railties/lib/rails/engine/configuration.rb,
railties/lib/rails/engine/lazy_route_set.rb,
railties/lib/rails/engine/railties.rb,
railties/lib/rails/engine/updater.rb,
railties/lib/rails/generators/actions.rb,
railties/lib/rails/generators/active_model.rb,
railties/lib/rails/generators/app_base.rb,
railties/lib/rails/generators/app_name.rb,
railties/lib/rails/generators/base.rb,
railties/lib/rails/generators/bundle_helper.rb,
railties/lib/rails/generators/database.rb,
railties/lib/rails/generators/generated_attribute.rb,
railties/lib/rails/generators/migration.rb,
railties/lib/rails/generators/model_helpers.rb,
railties/lib/rails/generators/named_base.rb,
railties/lib/rails/generators/resource_helpers.rb,
railties/lib/rails/generators/test_case.rb,
railties/lib/rails/generators/actions/create_migration.rb,
railties/lib/rails/generators/rails/app/app_generator.rb,
railties/lib/rails/generators/rails/application_record/application_record_generator.rb,
railties/lib/rails/generators/rails/authentication/authentication_generator.rb,
railties/lib/rails/generators/rails/benchmark/benchmark_generator.rb,
railties/lib/rails/generators/rails/controller/controller_generator.rb,
railties/lib/rails/generators/rails/credentials/credentials_generator.rb,
railties/lib/rails/generators/rails/db/system/change/change_generator.rb,
railties/lib/rails/generators/rails/devcontainer/devcontainer_generator.rb,
railties/lib/rails/generators/rails/encrypted_file/encrypted_file_generator.rb,
railties/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb,
railties/lib/rails/generators/rails/generator/generator_generator.rb,
railties/lib/rails/generators/rails/helper/helper_generator.rb,
railties/lib/rails/generators/rails/integration_test/integration_test_generator.rb,
railties/lib/rails/generators/rails/master_key/master_key_generator.rb,
railties/lib/rails/generators/rails/migration/migration_generator.rb,
railties/lib/rails/generators/rails/model/model_generator.rb,
railties/lib/rails/generators/rails/plugin/plugin_generator.rb,
railties/lib/rails/generators/rails/resource/resource_generator.rb,
railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb,
railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb,
railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb,
railties/lib/rails/generators/rails/script/script_generator.rb,
railties/lib/rails/generators/rails/system_test/system_test_generator.rb,
railties/lib/rails/generators/rails/task/task_generator.rb,
railties/lib/rails/generators/testing/assertions.rb,
railties/lib/rails/generators/testing/behavior.rb,
railties/lib/rails/generators/testing/setup_and_teardown.rb,
railties/lib/rails/rack/logger.rb,
railties/lib/rails/rack/silence_request.rb,
railties/lib/rails/rackup/server.rb,
railties/lib/rails/railtie/configurable.rb,
railties/lib/rails/railtie/configuration.rb,
railties/lib/rails/test_unit/line_filtering.rb,
railties/lib/rails/test_unit/railtie.rb,
railties/lib/rails/test_unit/reporter.rb,
railties/lib/rails/test_unit/runner.rb,
railties/lib/rails/test_unit/test_parser.rb,
railties/lib/rails/test_unit/test_parser.rb

Overview

Class Attribute Summary

Class Method Summary

::ActiveSupport::Benchmarkable - Extended

benchmark

Allows you to measure the execution time of a block in a template and records the result to the log.

::ActiveSupport::Autoload - Extended

Instance Method Summary

Class Attribute Details

.app_class (rw)

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 43

attr_accessor :app_class, :cache, :logger

.application (rw)

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 44

def application
  @application ||= (app_class.instance if app_class)
end

.application=(value) (rw)

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 42

attr_writer :application

.cache (rw)

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 43

attr_accessor :app_class, :cache, :logger

.env (rw)

Returns the current Rails environment.

Rails.env # => "development"
Rails.env.development? # => true
Rails.env.production? # => false
Rails.env.local? # => true              true for "development" and "test", false for anything else
[ GitHub ]

  
# File 'railties/lib/rails.rb', line 74

def env
  @_env ||= ActiveSupport::EnvironmentInquirer.new(ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence || "development")
end

.env=(environment) (rw)

Sets the Rails environment.

Rails.env = "staging" # => "staging"
[ GitHub ]

  
# File 'railties/lib/rails.rb', line 81

def env=(environment)
  @_env = ActiveSupport::EnvironmentInquirer.new(environment)
end

.logger (rw)

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 43

attr_accessor :app_class, :cache, :logger

Class Method Details

.autoloaders

Provides access to the application autoloaders.

The autoloader that manages autoload_paths is reachable as

Rails.autoloaders.main

This autoloader manages the constants that are reloaded when reloading is enabled.

The autoloader that manages autoload_once_paths is reachable as

Rails.autoloaders.once

This autoloader manages constants that are autoloaded, but not reloaded.

You can use these objects to customize their behavior, defining custom root namespaces, collapsing directories, configuring callbacks, etc.

# config/environments/development.rb
Rails.autoloaders.main.on_load("MyGateway") do
MyGateway.endpoint = "https://my-gateway.localhost"
end

# config/environments/production.rb
Rails.autoloaders.main.on_load("MyGateway") do
MyGateway.endpoint = "https://my-gateway.example.com"
end

The each iterator allows you to iterate over both loaders:

Rails.autoloaders.each do |loader|
loader.log!
end

which may be handy if you want to run the same code for both of them.

Indeed, there is a shortcut for that common use case:

Rails.autoloaders.log!

which is handy to watch the activity of the autoloaders.

Finally, zeitwerk_enabled? allows you to check if autoloading is powered by Zeitwerk. This predicate returns a hard-coded true since Rails 7, but it is still in place for engines that support Rails 6.

The autoloaders are available really early, you can access them in the application class body, environment configuration, initializers, etc.

Please check the Autoloading and Reloading Constants guide and the documentation of Zeitwerk itself for more details and usage patterns.

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 186

def autoloaders
  application.autoloaders
end

.backtrace_cleaner

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 55

def backtrace_cleaner
  @backtrace_cleaner ||= Rails::BacktraceCleaner.new
end

.configuration

The Configuration instance used to configure the Rails environment

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 51

def configuration
  application.config
end

.deprecator

This method is for internal use only.
[ GitHub ]

  
# File 'railties/lib/rails/deprecator.rb', line 4

def self.deprecator # :nodoc:
  @deprecator ||= ActiveSupport::Deprecation.new
end

.error

Returns the ::ActiveSupport::ErrorReporter of the current Rails project, otherwise it returns nil if there is no project.

Rails.error.handle(IOError) do
# ...
end
Rails.error.report(error)
[ GitHub ]

  
# File 'railties/lib/rails.rb', line 92

def error
  ActiveSupport.error_reporter
end

.event

Returns the ::ActiveSupport::EventReporter of the current Rails project, otherwise it returns nil if there is no project.

Rails.event.notify("my_event", { message: "Hello, world!" })
[ GitHub ]

  
# File 'railties/lib/rails.rb', line 100

def event
  ActiveSupport.event_reporter
end

.gem_version

Returns the currently loaded version of Rails as a Gem::Version.

[ GitHub ]

  
# File 'railties/lib/rails/gem_version.rb', line 5

def self.gem_version
  Gem::Version.new VERSION::STRING
end

.groups(*groups)

Returns all Rails groups for loading based on:

  • The Rails environment;
  • The environment variable RAILS_GROUPS;
  • The optional envs given as argument and the hash with group dependencies;

Rails.groups assets: [:development, :test]

=> [:default, "development", :assets] for Rails.env == "development"

=> [:default, "production"] for Rails.env == "production"

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 113

def groups(*groups)
  hash = groups.extract_options!
  env = Rails.env
  groups.unshift(:default, env)
  groups.concat ENV["RAILS_GROUPS"].to_s.split(",")
  groups.concat hash.map { |k, v| k if v.map(&:to_s).include?(env) }
  groups.compact!
  groups.uniq!
  groups
end

.public_path

Returns a ::Pathname object of the public folder of the current Rails project, otherwise it returns nil if there is no project:

Rails.public_path
# => #<Pathname:/Users/someuser/some/path/project/public>
[ GitHub ]

  
# File 'railties/lib/rails.rb', line 129

def public_path
  application && Pathname.new(application.paths["public"].first)
end

.root

Returns a ::Pathname object of the current Rails project, otherwise it returns nil if there is no project:

Rails.root
# => #<Pathname:/Users/someuser/some/path/project>
[ GitHub ]

  
# File 'railties/lib/rails.rb', line 64

def root
  application && application.config.root
end

.version

Returns the currently loaded version of Rails as a string.

[ GitHub ]

  
# File 'railties/lib/rails/version.rb', line 7

def self.version
  VERSION::STRING
end

Instance Method Details

#initialize!

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 48

delegate :initialize!, :initialized?, to: :application

#initialized?Boolean

[ GitHub ]

  
# File 'railties/lib/rails.rb', line 48

delegate :initialize!, :initialized?, to: :application