railties 5.0.7.2 → 5.1.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +77 -567
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.rdoc +3 -3
- data/README.rdoc +1 -1
- data/exe/rails +2 -2
- data/lib/rails.rb +18 -18
- data/lib/rails/all.rb +1 -1
- data/lib/rails/api/generator.rb +28 -0
- data/lib/rails/api/task.rb +54 -42
- data/lib/rails/app_loader.rb +9 -9
- data/lib/rails/application.rb +30 -35
- data/lib/rails/application/bootstrap.rb +13 -7
- data/lib/rails/application/configuration.rb +30 -53
- data/lib/rails/application/default_middleware_stack.rb +3 -5
- data/lib/rails/application/finisher.rb +16 -7
- data/lib/rails/application/routes_reloader.rb +16 -1
- data/lib/rails/application_controller.rb +10 -10
- data/lib/rails/backtrace_cleaner.rb +5 -5
- data/lib/rails/cli.rb +7 -5
- data/lib/rails/code_statistics.rb +16 -17
- data/lib/rails/code_statistics_calculator.rb +3 -3
- data/lib/rails/command.rb +111 -0
- data/lib/rails/command/actions.rb +42 -0
- data/lib/rails/command/base.rb +149 -0
- data/lib/rails/command/behavior.rb +123 -0
- data/lib/rails/command/environment_argument.rb +34 -0
- data/lib/rails/commands.rb +2 -4
- data/lib/rails/commands/application/application_command.rb +29 -0
- data/lib/rails/commands/console/console_command.rb +89 -0
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +155 -0
- data/lib/rails/commands/destroy/destroy_command.rb +21 -0
- data/lib/rails/commands/generate/generate_command.rb +23 -0
- data/lib/rails/commands/help/USAGE +15 -0
- data/lib/rails/commands/help/help_command.rb +13 -0
- data/lib/rails/commands/new/new_command.rb +15 -0
- data/lib/rails/commands/plugin/plugin_command.rb +43 -0
- data/lib/rails/commands/rake/rake_command.rb +49 -0
- data/lib/rails/commands/runner/USAGE +17 -0
- data/lib/rails/commands/runner/runner_command.rb +46 -0
- data/lib/rails/commands/secrets/USAGE +52 -0
- data/lib/rails/commands/secrets/secrets_command.rb +36 -0
- data/lib/rails/commands/server/server_command.rb +177 -0
- data/lib/rails/commands/test/test_command.rb +20 -0
- data/lib/rails/commands/version/version_command.rb +9 -0
- data/lib/rails/configuration.rb +7 -7
- data/lib/rails/console/app.rb +4 -4
- data/lib/rails/dev_caching.rb +8 -8
- data/lib/rails/engine.rb +62 -63
- data/lib/rails/engine/commands.rb +6 -13
- data/lib/rails/engine/configuration.rb +2 -2
- data/lib/rails/gem_version.rb +3 -3
- data/lib/rails/generators.rb +229 -313
- data/lib/rails/generators/actions.rb +20 -21
- data/lib/rails/generators/actions/create_migration.rb +24 -25
- data/lib/rails/generators/active_model.rb +3 -3
- data/lib/rails/generators/app_base.rb +123 -93
- data/lib/rails/generators/base.rb +32 -33
- data/lib/rails/generators/css/assets/assets_generator.rb +1 -1
- data/lib/rails/generators/erb.rb +14 -14
- data/lib/rails/generators/erb/controller/controller_generator.rb +1 -1
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +12 -12
- data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +3 -3
- data/lib/rails/generators/generated_attribute.rb +27 -27
- data/lib/rails/generators/js/assets/assets_generator.rb +1 -1
- data/lib/rails/generators/migration.rb +8 -8
- data/lib/rails/generators/model_helpers.rb +2 -2
- data/lib/rails/generators/named_base.rb +56 -56
- data/lib/rails/generators/rails/app/app_generator.rb +98 -81
- data/lib/rails/generators/rails/app/templates/Gemfile +7 -2
- data/lib/rails/generators/rails/app/templates/app/assets/config/manifest.js.tt +0 -2
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +6 -4
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.js +1 -1
- data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css +2 -2
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/bin/{setup → setup.tt} +6 -0
- data/lib/rails/generators/rails/app/templates/bin/{update → update.tt} +2 -1
- data/lib/rails/generators/rails/app/templates/bin/yarn +9 -0
- data/lib/rails/generators/rails/app/templates/config/cable.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml +2 -1
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +10 -1
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/application_controller_renderer.rb +4 -6
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +8 -3
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults.rb.tt +6 -5
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +10 -0
- data/lib/rails/generators/rails/app/templates/config/puma.rb +16 -7
- data/lib/rails/generators/rails/app/templates/config/secrets.yml +12 -2
- data/lib/rails/generators/rails/app/templates/gitignore +5 -1
- data/lib/rails/generators/rails/app/templates/package.json +5 -0
- data/lib/rails/generators/rails/app/templates/public/404.html +6 -6
- data/lib/rails/generators/rails/app/templates/public/422.html +6 -6
- data/lib/rails/generators/rails/app/templates/public/500.html +6 -6
- data/lib/rails/generators/rails/app/templates/public/robots.txt +0 -4
- data/lib/rails/generators/rails/app/templates/test/application_system_test_case.rb +5 -0
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb +0 -1
- data/lib/rails/generators/rails/assets/assets_generator.rb +10 -10
- data/lib/rails/generators/rails/controller/controller_generator.rb +15 -12
- data/lib/rails/generators/rails/encrypted_secrets/encrypted_secrets_generator.rb +66 -0
- data/lib/rails/generators/rails/encrypted_secrets/templates/config/secrets.yml.enc +3 -0
- data/lib/rails/generators/rails/generator/generator_generator.rb +2 -3
- data/lib/rails/generators/rails/helper/helper_generator.rb +1 -1
- data/lib/rails/generators/rails/model/model_generator.rb +1 -1
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +21 -26
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -0
- data/lib/rails/generators/rails/plugin/templates/bin/test.tt +3 -9
- data/lib/rails/generators/rails/plugin/templates/test/application_system_test_case.rb +5 -0
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +0 -3
- data/lib/rails/generators/rails/resource/resource_generator.rb +2 -2
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +5 -1
- data/lib/rails/generators/rails/scaffold/templates/scaffold.css +4 -8
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +2 -3
- data/lib/rails/generators/rails/system_test/USAGE +10 -0
- data/lib/rails/generators/rails/system_test/system_test_generator.rb +7 -0
- data/lib/rails/generators/rails/task/task_generator.rb +1 -2
- data/lib/rails/generators/resource_helpers.rb +13 -10
- data/lib/rails/generators/test_case.rb +5 -6
- data/lib/rails/generators/test_unit.rb +1 -1
- data/lib/rails/generators/test_unit/controller/controller_generator.rb +3 -3
- data/lib/rails/generators/test_unit/generator/generator_generator.rb +3 -3
- data/lib/rails/generators/test_unit/helper/helper_generator.rb +1 -1
- data/lib/rails/generators/test_unit/integration/integration_generator.rb +2 -2
- data/lib/rails/generators/test_unit/job/job_generator.rb +3 -3
- data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +5 -5
- data/lib/rails/generators/test_unit/model/model_generator.rb +3 -4
- data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +3 -3
- data/lib/rails/generators/test_unit/system/system_generator.rb +17 -0
- data/lib/rails/generators/test_unit/system/templates/application_system_test_case.rb +5 -0
- data/lib/rails/generators/test_unit/system/templates/system_test.rb +9 -0
- data/lib/rails/generators/testing/assertions.rb +4 -4
- data/lib/rails/generators/testing/behaviour.rb +20 -21
- data/lib/rails/info.rb +20 -20
- data/lib/rails/info_controller.rb +15 -15
- data/lib/rails/initializable.rb +6 -2
- data/lib/rails/mailers_controller.rb +11 -11
- data/lib/rails/paths.rb +4 -5
- data/lib/rails/plugin/test.rb +7 -0
- data/lib/rails/rack/logger.rb +44 -46
- data/lib/rails/railtie.rb +41 -38
- data/lib/rails/railtie/configurable.rb +6 -6
- data/lib/rails/railtie/configuration.rb +1 -1
- data/lib/rails/ruby_version_check.rb +1 -1
- data/lib/rails/secrets.rb +111 -0
- data/lib/rails/source_annotation_extractor.rb +15 -9
- data/lib/rails/tasks.rb +3 -2
- data/lib/rails/tasks/annotations.rake +3 -3
- data/lib/rails/tasks/dev.rake +2 -2
- data/lib/rails/tasks/engine.rake +4 -4
- data/lib/rails/tasks/framework.rake +4 -18
- data/lib/rails/tasks/initializers.rake +1 -1
- data/lib/rails/tasks/log.rake +14 -10
- data/lib/rails/tasks/middleware.rake +1 -1
- data/lib/rails/tasks/misc.rake +10 -10
- data/lib/rails/tasks/restart.rake +4 -4
- data/lib/rails/tasks/routes.rake +3 -12
- data/lib/rails/tasks/statistics.rake +3 -3
- data/lib/rails/tasks/tmp.rake +7 -7
- data/lib/rails/tasks/yarn.rake +11 -0
- data/lib/rails/templates/rails/mailers/email.html.erb +4 -1
- data/lib/rails/test_help.rb +28 -10
- data/lib/rails/test_unit/line_filtering.rb +69 -3
- data/lib/rails/test_unit/minitest_plugin.rb +139 -0
- data/lib/rails/test_unit/railtie.rb +2 -1
- data/lib/rails/test_unit/reporter.rb +3 -8
- data/lib/rails/test_unit/test_requirer.rb +28 -0
- data/lib/rails/test_unit/testing.rake +19 -14
- data/lib/rails/version.rb +1 -1
- data/lib/rails/welcome_controller.rb +1 -1
- metadata +53 -30
- data/lib/minitest/rails_plugin.rb +0 -49
- data/lib/rails/commands/application.rb +0 -17
- data/lib/rails/commands/commands_tasks.rb +0 -180
- data/lib/rails/commands/console.rb +0 -68
- data/lib/rails/commands/console_helper.rb +0 -34
- data/lib/rails/commands/dbconsole.rb +0 -173
- data/lib/rails/commands/destroy.rb +0 -11
- data/lib/rails/commands/generate.rb +0 -13
- data/lib/rails/commands/plugin.rb +0 -23
- data/lib/rails/commands/rake_proxy.rb +0 -41
- data/lib/rails/commands/runner.rb +0 -71
- data/lib/rails/commands/server.rb +0 -163
- data/lib/rails/commands/test.rb +0 -10
- data/lib/rails/engine/commands_tasks.rb +0 -118
- data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +0 -3
- data/lib/rails/rack/debugger.rb +0 -3
- data/lib/rails/test_unit/runner.rb +0 -141
@@ -1,7 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "fileutils"
|
2
|
+
require "active_support/notifications"
|
3
|
+
require "active_support/dependencies"
|
4
|
+
require "active_support/descendants_tracker"
|
5
|
+
require "rails/secrets"
|
5
6
|
|
6
7
|
module Rails
|
7
8
|
class Application
|
@@ -36,7 +37,7 @@ INFO
|
|
36
37
|
FileUtils.mkdir_p File.dirname path
|
37
38
|
end
|
38
39
|
|
39
|
-
f = File.open path,
|
40
|
+
f = File.open path, "a"
|
40
41
|
f.binmode
|
41
42
|
f.sync = config.autoflush_log # if true make sure every write flushes
|
42
43
|
|
@@ -48,8 +49,8 @@ INFO
|
|
48
49
|
logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDERR))
|
49
50
|
logger.level = ActiveSupport::Logger::WARN
|
50
51
|
logger.warn(
|
51
|
-
"Rails Error: Unable to access log file. Please ensure that #{path} exists and is writable "
|
52
|
-
"(ie, make it writable for user and group: chmod 0664 #{path}). "
|
52
|
+
"Rails Error: Unable to access log file. Please ensure that #{path} exists and is writable " \
|
53
|
+
"(ie, make it writable for user and group: chmod 0664 #{path}). " \
|
53
54
|
"The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
|
54
55
|
)
|
55
56
|
logger
|
@@ -77,6 +78,11 @@ INFO
|
|
77
78
|
initializer :bootstrap_hook, group: :all do |app|
|
78
79
|
ActiveSupport.run_load_hooks(:before_initialize, app)
|
79
80
|
end
|
81
|
+
|
82
|
+
initializer :set_secrets_root, group: :all do
|
83
|
+
Rails::Secrets.root = root
|
84
|
+
Rails::Secrets.read_encrypted_secrets = config.read_encrypted_secrets
|
85
|
+
end
|
80
86
|
end
|
81
87
|
end
|
82
88
|
end
|
@@ -1,10 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
|
6
|
-
require 'active_support/deprecation'
|
7
|
-
require 'active_support/core_ext/string/strip' # for strip_heredoc
|
1
|
+
require "active_support/core_ext/kernel/reporting"
|
2
|
+
require "active_support/file_update_checker"
|
3
|
+
require "rails/engine/configuration"
|
4
|
+
require "rails/source_annotation_extractor"
|
8
5
|
|
9
6
|
module Rails
|
10
7
|
class Application
|
@@ -16,14 +13,15 @@ module Rails
|
|
16
13
|
:railties_order, :relative_url_root, :secret_key_base, :secret_token,
|
17
14
|
:ssl_options, :public_file_server,
|
18
15
|
:session_options, :time_zone, :reload_classes_only_on_change,
|
19
|
-
:beginning_of_week, :filter_redirect, :x, :enable_dependency_loading
|
16
|
+
:beginning_of_week, :filter_redirect, :x, :enable_dependency_loading,
|
17
|
+
:read_encrypted_secrets
|
20
18
|
|
21
19
|
attr_writer :log_level
|
22
|
-
attr_reader :encoding, :api_only
|
20
|
+
attr_reader :encoding, :api_only
|
23
21
|
|
24
22
|
def initialize(*)
|
25
23
|
super
|
26
|
-
self.encoding
|
24
|
+
self.encoding = Encoding::UTF_8
|
27
25
|
@allow_concurrency = nil
|
28
26
|
@consider_all_requests_local = false
|
29
27
|
@filter_parameters = []
|
@@ -34,8 +32,7 @@ module Rails
|
|
34
32
|
@public_file_server.index_name = "index"
|
35
33
|
@force_ssl = false
|
36
34
|
@ssl_options = {}
|
37
|
-
@session_store =
|
38
|
-
@session_options = {}
|
35
|
+
@session_store = nil
|
39
36
|
@time_zone = "UTC"
|
40
37
|
@beginning_of_week = :monday
|
41
38
|
@log_level = nil
|
@@ -55,35 +52,7 @@ module Rails
|
|
55
52
|
@debug_exception_response_format = nil
|
56
53
|
@x = Custom.new
|
57
54
|
@enable_dependency_loading = false
|
58
|
-
|
59
|
-
|
60
|
-
def static_cache_control=(value)
|
61
|
-
ActiveSupport::Deprecation.warn <<-eow.strip_heredoc
|
62
|
-
`config.static_cache_control` is deprecated and will be removed in Rails 5.1.
|
63
|
-
Please use
|
64
|
-
`config.public_file_server.headers = { 'Cache-Control' => '#{value}' }`
|
65
|
-
instead.
|
66
|
-
eow
|
67
|
-
|
68
|
-
@static_cache_control = value
|
69
|
-
end
|
70
|
-
|
71
|
-
def serve_static_files
|
72
|
-
ActiveSupport::Deprecation.warn <<-eow.strip_heredoc
|
73
|
-
`config.serve_static_files` is deprecated and will be removed in Rails 5.1.
|
74
|
-
Please use `config.public_file_server.enabled` instead.
|
75
|
-
eow
|
76
|
-
|
77
|
-
@public_file_server.enabled
|
78
|
-
end
|
79
|
-
|
80
|
-
def serve_static_files=(value)
|
81
|
-
ActiveSupport::Deprecation.warn <<-eow.strip_heredoc
|
82
|
-
`config.serve_static_files` is deprecated and will be removed in Rails 5.1.
|
83
|
-
Please use `config.public_file_server.enabled = #{value}` instead.
|
84
|
-
eow
|
85
|
-
|
86
|
-
@public_file_server.enabled = value
|
55
|
+
@read_encrypted_secrets = false
|
87
56
|
end
|
88
57
|
|
89
58
|
def encoding=(value)
|
@@ -113,7 +82,7 @@ module Rails
|
|
113
82
|
@paths ||= begin
|
114
83
|
paths = super
|
115
84
|
paths.add "config/database", with: "config/database.yml"
|
116
|
-
paths.add "config/secrets", with: "config
|
85
|
+
paths.add "config/secrets", with: "config", glob: "secrets.yml{,.enc}"
|
117
86
|
paths.add "config/environment", with: "config/environment.rb"
|
118
87
|
paths.add "lib/templates"
|
119
88
|
paths.add "log", with: "log/#{Rails.env}.log"
|
@@ -135,7 +104,7 @@ module Rails
|
|
135
104
|
require "yaml"
|
136
105
|
require "erb"
|
137
106
|
YAML.load(ERB.new(yaml.read).result) || {}
|
138
|
-
elsif ENV[
|
107
|
+
elsif ENV["DATABASE_URL"]
|
139
108
|
# Value from ENV['DATABASE_URL'] is set to default database connection
|
140
109
|
# by Active Record.
|
141
110
|
{}
|
@@ -162,32 +131,40 @@ module Rails
|
|
162
131
|
|
163
132
|
def colorize_logging=(val)
|
164
133
|
ActiveSupport::LogSubscriber.colorize_logging = val
|
165
|
-
|
134
|
+
generators.colorize_logging = val
|
166
135
|
end
|
167
136
|
|
168
|
-
def session_store(
|
169
|
-
if
|
170
|
-
|
171
|
-
when :disabled
|
172
|
-
nil
|
173
|
-
when :active_record_store
|
137
|
+
def session_store(new_session_store = nil, **options)
|
138
|
+
if new_session_store
|
139
|
+
if new_session_store == :active_record_store
|
174
140
|
begin
|
175
141
|
ActionDispatch::Session::ActiveRecordStore
|
176
142
|
rescue NameError
|
177
143
|
raise "`ActiveRecord::SessionStore` is extracted out of Rails into a gem. " \
|
178
144
|
"Please add `activerecord-session_store` to your Gemfile to use it."
|
179
145
|
end
|
146
|
+
end
|
147
|
+
|
148
|
+
@session_store = new_session_store
|
149
|
+
@session_options = options || {}
|
150
|
+
else
|
151
|
+
case @session_store
|
152
|
+
when :disabled
|
153
|
+
nil
|
154
|
+
when :active_record_store
|
155
|
+
ActionDispatch::Session::ActiveRecordStore
|
180
156
|
when Symbol
|
181
157
|
ActionDispatch::Session.const_get(@session_store.to_s.camelize)
|
182
158
|
else
|
183
159
|
@session_store
|
184
160
|
end
|
185
|
-
else
|
186
|
-
@session_store = args.shift
|
187
|
-
@session_options = args.shift || {}
|
188
161
|
end
|
189
162
|
end
|
190
163
|
|
164
|
+
def session_store? #:nodoc:
|
165
|
+
@session_store
|
166
|
+
end
|
167
|
+
|
191
168
|
def annotations
|
192
169
|
SourceAnnotationExtractor::Annotation
|
193
170
|
end
|
@@ -19,7 +19,6 @@ module Rails
|
|
19
19
|
|
20
20
|
if config.public_file_server.enabled
|
21
21
|
headers = config.public_file_server.headers || {}
|
22
|
-
headers['Cache-Control'.freeze] = config.static_cache_control if config.static_cache_control
|
23
22
|
|
24
23
|
middleware.use ::ActionDispatch::Static, paths["public"].first, index: config.public_file_server.index_name, headers: headers
|
25
24
|
end
|
@@ -41,12 +40,11 @@ module Rails
|
|
41
40
|
middleware.use ::Rack::Runtime
|
42
41
|
middleware.use ::Rack::MethodOverride unless config.api_only
|
43
42
|
middleware.use ::ActionDispatch::RequestId
|
43
|
+
middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies
|
44
44
|
|
45
|
-
# Must come after Rack::MethodOverride to properly log overridden methods
|
46
45
|
middleware.use ::Rails::Rack::Logger, config.log_tags
|
47
46
|
middleware.use ::ActionDispatch::ShowExceptions, show_exceptions_app
|
48
47
|
middleware.use ::ActionDispatch::DebugExceptions, app, config.debug_exception_response_format
|
49
|
-
middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies
|
50
48
|
|
51
49
|
unless config.cache_classes
|
52
50
|
middleware.use ::ActionDispatch::Reloader, app.reloader
|
@@ -76,9 +74,9 @@ module Rails
|
|
76
74
|
return unless rack_cache
|
77
75
|
|
78
76
|
begin
|
79
|
-
require
|
77
|
+
require "rack/cache"
|
80
78
|
rescue LoadError => error
|
81
|
-
error.message <<
|
79
|
+
error.message << " Be sure to add rack-cache to your Gemfile"
|
82
80
|
raise
|
83
81
|
end
|
84
82
|
|
@@ -22,17 +22,25 @@ module Rails
|
|
22
22
|
initializer :add_builtin_route do |app|
|
23
23
|
if Rails.env.development?
|
24
24
|
app.routes.prepend do
|
25
|
-
get
|
26
|
-
get
|
27
|
-
get
|
25
|
+
get "/rails/info/properties" => "rails/info#properties", internal: true
|
26
|
+
get "/rails/info/routes" => "rails/info#routes", internal: true
|
27
|
+
get "/rails/info" => "rails/info#index", internal: true
|
28
28
|
end
|
29
29
|
|
30
30
|
app.routes.append do
|
31
|
-
get
|
31
|
+
get "/" => "rails/welcome#index", internal: true
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
# Setup default session store if not already set in config/application.rb
|
37
|
+
initializer :setup_default_session_store, before: :build_middleware_stack do |app|
|
38
|
+
unless app.config.session_store?
|
39
|
+
app_name = app.class.name ? app.railtie_name.chomp("_application") : ""
|
40
|
+
app.config.session_store :cookie_store, key: "_#{app_name}_session"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
36
44
|
initializer :build_middleware_stack do
|
37
45
|
build_middleware_stack
|
38
46
|
end
|
@@ -98,7 +106,7 @@ module Rails
|
|
98
106
|
|
99
107
|
elsif config.allow_concurrency == :unsafe
|
100
108
|
# Do nothing, even if we know this is dangerous. This is the
|
101
|
-
# historical
|
109
|
+
# historical behavior for true.
|
102
110
|
|
103
111
|
else
|
104
112
|
# Default concurrency setting: enabled, but safe
|
@@ -116,8 +124,9 @@ module Rails
|
|
116
124
|
# the hook are taken into account.
|
117
125
|
initializer :set_routes_reloader_hook do |app|
|
118
126
|
reloader = routes_reloader
|
127
|
+
reloader.eager_load = app.config.eager_load
|
119
128
|
reloader.execute_if_updated
|
120
|
-
|
129
|
+
reloaders << reloader
|
121
130
|
app.reloader.to_run do
|
122
131
|
# We configure #execute rather than #execute_if_updated because if
|
123
132
|
# autoloaded constants are cleared we need to reload routes also in
|
@@ -153,7 +162,7 @@ module Rails
|
|
153
162
|
|
154
163
|
if config.reload_classes_only_on_change
|
155
164
|
reloader = config.file_watcher.new(*watchable_args, &callback)
|
156
|
-
|
165
|
+
reloaders << reloader
|
157
166
|
|
158
167
|
# Prepend this callback to have autoloaded constants cleared before
|
159
168
|
# any other possible reloading, in case they need to autoload fresh
|
@@ -4,11 +4,13 @@ module Rails
|
|
4
4
|
class Application
|
5
5
|
class RoutesReloader
|
6
6
|
attr_reader :route_sets, :paths
|
7
|
-
|
7
|
+
attr_accessor :eager_load
|
8
|
+
delegate :updated?, to: :updater
|
8
9
|
|
9
10
|
def initialize
|
10
11
|
@paths = []
|
11
12
|
@route_sets = []
|
13
|
+
@eager_load = false
|
12
14
|
end
|
13
15
|
|
14
16
|
def reload!
|
@@ -19,6 +21,19 @@ module Rails
|
|
19
21
|
revert
|
20
22
|
end
|
21
23
|
|
24
|
+
def execute
|
25
|
+
ret = updater.execute
|
26
|
+
route_sets.each(&:eager_load!) if eager_load
|
27
|
+
ret
|
28
|
+
end
|
29
|
+
|
30
|
+
def execute_if_updated
|
31
|
+
if updated = updater.execute_if_updated
|
32
|
+
route_sets.each(&:eager_load!) if eager_load
|
33
|
+
end
|
34
|
+
updated
|
35
|
+
end
|
36
|
+
|
22
37
|
private
|
23
38
|
|
24
39
|
def updater
|
@@ -1,16 +1,16 @@
|
|
1
1
|
class Rails::ApplicationController < ActionController::Base # :nodoc:
|
2
|
-
self.view_paths = File.expand_path(
|
3
|
-
layout
|
2
|
+
self.view_paths = File.expand_path("../templates", __FILE__)
|
3
|
+
layout "application"
|
4
4
|
|
5
|
-
|
5
|
+
private
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
def require_local!
|
8
|
+
unless local_request?
|
9
|
+
render html: "<p>For security purposes, this information is only available to local requests.</p>".html_safe, status: :forbidden
|
10
|
+
end
|
10
11
|
end
|
11
|
-
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
def local_request?
|
14
|
+
Rails.application.config.consider_all_requests_local || request.local?
|
15
|
+
end
|
16
16
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require "active_support/backtrace_cleaner"
|
2
2
|
|
3
3
|
module Rails
|
4
4
|
class BacktraceCleaner < ActiveSupport::BacktraceCleaner
|
5
|
-
APP_DIRS_PATTERN = /^\/?(app|config|lib|test)/
|
5
|
+
APP_DIRS_PATTERN = /^\/?(app|config|lib|test|\(\w*\))/
|
6
6
|
RENDER_TEMPLATE_PATTERN = /:in `_render_template_\w*'/
|
7
|
-
EMPTY_STRING =
|
8
|
-
SLASH =
|
9
|
-
DOT_SLASH =
|
7
|
+
EMPTY_STRING = "".freeze
|
8
|
+
SLASH = "/".freeze
|
9
|
+
DOT_SLASH = "./".freeze
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
super
|
data/lib/rails/cli.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
require
|
1
|
+
require "rails/app_loader"
|
2
2
|
|
3
3
|
# If we are inside a Rails application this method performs an exec and thus
|
4
4
|
# the rest of this script is not run.
|
5
5
|
Rails::AppLoader.exec_app
|
6
6
|
|
7
|
-
require
|
7
|
+
require "rails/ruby_version_check"
|
8
8
|
Signal.trap("INT") { puts; exit(1) }
|
9
9
|
|
10
|
-
|
10
|
+
require "rails/command"
|
11
|
+
|
12
|
+
if ARGV.first == "plugin"
|
11
13
|
ARGV.shift
|
12
|
-
|
14
|
+
Rails::Command.invoke :plugin, ARGV
|
13
15
|
else
|
14
|
-
|
16
|
+
Rails::Command.invoke :application, ARGV
|
15
17
|
end
|
@@ -1,16 +1,15 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rails/code_statistics_calculator"
|
2
|
+
require "active_support/core_ext/enumerable"
|
3
3
|
|
4
4
|
class CodeStatistics #:nodoc:
|
5
|
+
TEST_TYPES = ["Controller tests",
|
6
|
+
"Helper tests",
|
7
|
+
"Model tests",
|
8
|
+
"Mailer tests",
|
9
|
+
"Job tests",
|
10
|
+
"Integration tests"]
|
5
11
|
|
6
|
-
|
7
|
-
'Helper tests',
|
8
|
-
'Model tests',
|
9
|
-
'Mailer tests',
|
10
|
-
'Job tests',
|
11
|
-
'Integration tests']
|
12
|
-
|
13
|
-
HEADERS = {lines: ' Lines', code_lines: ' LOC', classes: 'Classes', methods: 'Methods'}
|
12
|
+
HEADERS = { lines: " Lines", code_lines: " LOC", classes: "Classes", methods: "Methods" }
|
14
13
|
|
15
14
|
def initialize(*pairs)
|
16
15
|
@pairs = pairs
|
@@ -33,7 +32,7 @@ class CodeStatistics #:nodoc:
|
|
33
32
|
|
34
33
|
private
|
35
34
|
def calculate_statistics
|
36
|
-
Hash[@pairs.map{|pair| [pair.first, calculate_directory_statistics(pair.last)]}]
|
35
|
+
Hash[@pairs.map { |pair| [pair.first, calculate_directory_statistics(pair.last)] }]
|
37
36
|
end
|
38
37
|
|
39
38
|
def calculate_directory_statistics(directory, pattern = /^(?!\.).*?\.(rb|js|coffee|rake)$/)
|
@@ -71,25 +70,25 @@ class CodeStatistics #:nodoc:
|
|
71
70
|
end
|
72
71
|
|
73
72
|
def width_for(label)
|
74
|
-
[@statistics.values.sum {|s| s.send(label) }.to_s.size, HEADERS[label].length].max
|
73
|
+
[@statistics.values.sum { |s| s.send(label) }.to_s.size, HEADERS[label].length].max
|
75
74
|
end
|
76
75
|
|
77
76
|
def print_header
|
78
77
|
print_splitter
|
79
|
-
print
|
78
|
+
print "| Name "
|
80
79
|
HEADERS.each do |k, v|
|
81
80
|
print " | #{v.rjust(width_for(k))}"
|
82
81
|
end
|
83
|
-
puts
|
82
|
+
puts " | M/C | LOC/M |"
|
84
83
|
print_splitter
|
85
84
|
end
|
86
85
|
|
87
86
|
def print_splitter
|
88
|
-
print
|
87
|
+
print "+----------------------"
|
89
88
|
HEADERS.each_key do |k|
|
90
89
|
print "+#{'-' * (width_for(k) + 2)}"
|
91
90
|
end
|
92
|
-
puts
|
91
|
+
puts "+-----+-------+"
|
93
92
|
end
|
94
93
|
|
95
94
|
def print_line(name, statistics)
|
@@ -107,7 +106,7 @@ class CodeStatistics #:nodoc:
|
|
107
106
|
code = calculate_code
|
108
107
|
tests = calculate_tests
|
109
108
|
|
110
|
-
puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f/code)}"
|
109
|
+
puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f / code)}"
|
111
110
|
puts ""
|
112
111
|
end
|
113
112
|
end
|