-
Notifications
You must be signed in to change notification settings - Fork 21.4k
/
rails.rb
130 lines (110 loc) · 3.68 KB
/
rails.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# frozen_string_literal: true
require "pathname"
require "active_support"
require "active_support/core_ext/kernel/reporting"
require "active_support/core_ext/module/delegation"
require "active_support/core_ext/array/extract_options"
require "active_support/core_ext/object/blank"
require "rails/version"
require "rails/deprecator"
require "rails/application"
require "rails/backtrace_cleaner"
require "active_support/railtie"
require "action_dispatch/railtie"
# UTF-8 is the default internal and external encoding.
silence_warnings do
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
end
# :include: ../README.rdoc
module Rails
extend ActiveSupport::Autoload
extend ActiveSupport::Benchmarkable
autoload :Info
autoload :InfoController
autoload :MailersController
autoload :WelcomeController
eager_autoload do
autoload :HealthController
autoload :PwaController
end
class << self
@application = @app_class = nil
attr_writer :application
attr_accessor :app_class, :cache, :logger
def application
@application ||= (app_class.instance if app_class)
end
delegate :initialize!, :initialized?, to: :application
# The Configuration instance used to configure the \Rails environment
def configuration
application.config
end
def backtrace_cleaner
@backtrace_cleaner ||= Rails::BacktraceCleaner.new
end
# 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>
def root
application && application.config.root
end
# 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
def env
@_env ||= ActiveSupport::EnvironmentInquirer.new(ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence || "development")
end
# Sets the \Rails environment.
#
# Rails.env = "staging" # => "staging"
def env=(environment)
@_env = ActiveSupport::EnvironmentInquirer.new(environment)
end
# 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)
def error
ActiveSupport.error_reporter
end
# 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"
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
# 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>
def public_path
application && Pathname.new(application.paths["public"].first)
end
def autoloaders
application.autoloaders
end
end
end