railties 7.0.3.1 → 7.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/lib/rails/app_updater.rb +6 -1
- data/lib/rails/application/bootstrap.rb +3 -0
- data/lib/rails/application/configuration.rb +8 -2
- data/lib/rails/application/default_middleware_stack.rb +15 -0
- data/lib/rails/application/finisher.rb +7 -7
- data/lib/rails/commands/server/server_command.rb +6 -1
- data/lib/rails/gem_version.rb +2 -2
- data/lib/rails/generators/app_base.rb +6 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +38 -20
- data/lib/rails/generators.rb +7 -1
- data/lib/rails/railtie.rb +4 -0
- data/lib/rails.rb +7 -0
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz: '
|
3
|
+
metadata.gz: 8426dae672be312fe1692dddb173520cb38cab1d146901da4e8321a731c4d309
|
4
|
+
data.tar.gz: '086173aa65cfba04c54b052ad3725f2cb55caafc7b2eef3255883f86a51dea3b'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a936aed24714e95363c55d50c008a2d85a4b22951647172b79b7d5faaaa2b49dce611f43bc6099001cc400b91614a49f003f5c68834c218596434c2d6e5ae71
|
7
|
+
data.tar.gz: b863940381ffc5819d6cd191735d30af40603d04946630781ab01ba6d0b6ab3ead22449b95f99fca4f84bbfa06b85b6aa9d3d05cce5ab1df0bd2a8841420d76e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
+
## Rails 7.0.4 (September 09, 2022) ##
|
2
|
+
|
3
|
+
* `config.allow_concurrency = false` now use a `Monitor` instead of a `Mutex`
|
4
|
+
|
5
|
+
This allows to enable `config.active_support.executor_around_test_case` even
|
6
|
+
when `config.allow_concurrency` is disabled.
|
7
|
+
|
8
|
+
*Jean Boussier*
|
9
|
+
|
10
|
+
* Skip Active Storage and Action Mailer if Active Job is skipped.
|
11
|
+
|
12
|
+
*Étienne Barrié*
|
13
|
+
|
14
|
+
* Correctly check if frameworks are disabled when running app:update.
|
15
|
+
|
16
|
+
*Étienne Barrié* and *Paulo Barros*
|
17
|
+
|
18
|
+
* Fixed `config.active_support.cache_format_version` never being applied.
|
19
|
+
|
20
|
+
Rails 7.0 shipped with a new serializer for Rails.cache, but the associated config
|
21
|
+
wasn't working properly. Note that even after this fix, it can only be applied from
|
22
|
+
the `application.rb` file.
|
23
|
+
|
24
|
+
*Alex Ghiculescu*
|
25
|
+
|
26
|
+
|
1
27
|
## Rails 7.0.3.1 (July 12, 2022) ##
|
2
28
|
|
3
29
|
* No changes.
|
data/lib/rails/app_updater.rb
CHANGED
@@ -21,10 +21,15 @@ module Rails
|
|
21
21
|
private
|
22
22
|
def generator_options
|
23
23
|
options = { api: !!Rails.application.config.api_only, update: true }
|
24
|
+
options[:skip_active_job] = !defined?(ActiveJob::Railtie)
|
24
25
|
options[:skip_active_record] = !defined?(ActiveRecord::Railtie)
|
25
|
-
options[:skip_active_storage] = !defined?(ActiveStorage::Engine)
|
26
|
+
options[:skip_active_storage] = !defined?(ActiveStorage::Engine)
|
26
27
|
options[:skip_action_mailer] = !defined?(ActionMailer::Railtie)
|
28
|
+
options[:skip_action_mailbox] = !defined?(ActionMailbox::Engine)
|
29
|
+
options[:skip_action_text] = !defined?(ActionText::Engine)
|
27
30
|
options[:skip_action_cable] = !defined?(ActionCable::Engine)
|
31
|
+
options[:skip_test] = !defined?(Rails::TestUnitRailtie)
|
32
|
+
options[:skip_system_test] = Rails.application.config.generators.system_tests.nil?
|
28
33
|
options[:skip_asset_pipeline] = !defined?(Sprockets::Railtie) && !defined?(Propshaft::Railtie)
|
29
34
|
options[:skip_bootsnap] = !defined?(Bootsnap)
|
30
35
|
options[:updating] = true
|
@@ -59,6 +59,9 @@ module Rails
|
|
59
59
|
|
60
60
|
# Initialize cache early in the stack so railties can make use of it.
|
61
61
|
initializer :initialize_cache, group: :all do
|
62
|
+
cache_format_version = config.active_support.delete(:cache_format_version)
|
63
|
+
ActiveSupport.cache_format_version = cache_format_version if cache_format_version
|
64
|
+
|
62
65
|
unless Rails.cache
|
63
66
|
Rails.cache = ActiveSupport::Cache.lookup_store(*config.cache_store)
|
64
67
|
|
@@ -334,8 +334,14 @@ module Rails
|
|
334
334
|
config = if yaml&.exist?
|
335
335
|
loaded_yaml = ActiveSupport::ConfigurationFile.parse(yaml)
|
336
336
|
if (shared = loaded_yaml.delete("shared"))
|
337
|
-
loaded_yaml.each do |
|
338
|
-
values.
|
337
|
+
loaded_yaml.each do |env, config|
|
338
|
+
if config.is_a?(Hash) && config.values.all?(Hash)
|
339
|
+
config.map do |name, sub_config|
|
340
|
+
sub_config.reverse_merge!(shared)
|
341
|
+
end
|
342
|
+
else
|
343
|
+
config.reverse_merge!(shared)
|
344
|
+
end
|
339
345
|
end
|
340
346
|
end
|
341
347
|
Hash.new(shared).merge(loaded_yaml)
|
@@ -81,6 +81,21 @@ module Rails
|
|
81
81
|
middleware.use ::Rack::ETag, "no-cache"
|
82
82
|
|
83
83
|
middleware.use ::Rack::TempfileReaper unless config.api_only
|
84
|
+
|
85
|
+
if config.respond_to?(:active_record)
|
86
|
+
if selector_options = config.active_record.database_selector
|
87
|
+
resolver = config.active_record.database_resolver
|
88
|
+
context = config.active_record.database_resolver_context
|
89
|
+
|
90
|
+
middleware.use ::ActiveRecord::Middleware::DatabaseSelector, resolver, context, selector_options
|
91
|
+
end
|
92
|
+
|
93
|
+
if shard_resolver = config.active_record.shard_resolver
|
94
|
+
options = config.active_record.shard_selector || {}
|
95
|
+
|
96
|
+
middleware.use ::ActiveRecord::Middleware::ShardSelector, shard_resolver, options
|
97
|
+
end
|
98
|
+
end
|
84
99
|
end
|
85
100
|
end
|
86
101
|
|
@@ -87,21 +87,21 @@ module Rails
|
|
87
87
|
ActiveSupport.run_load_hooks(:after_initialize, self)
|
88
88
|
end
|
89
89
|
|
90
|
-
class
|
91
|
-
def initialize(
|
92
|
-
@
|
90
|
+
class MonitorHook # :nodoc:
|
91
|
+
def initialize(monitor = Monitor.new)
|
92
|
+
@monitor = monitor
|
93
93
|
end
|
94
94
|
|
95
95
|
def run
|
96
|
-
@
|
96
|
+
@monitor.enter
|
97
97
|
end
|
98
98
|
|
99
99
|
def complete(_state)
|
100
|
-
@
|
100
|
+
@monitor.exit
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
-
module InterlockHook
|
104
|
+
module InterlockHook # :nodoc:
|
105
105
|
def self.run
|
106
106
|
ActiveSupport::Dependencies.interlock.start_running
|
107
107
|
end
|
@@ -116,7 +116,7 @@ module Rails
|
|
116
116
|
# User has explicitly opted out of concurrent request
|
117
117
|
# handling: presumably their code is not threadsafe
|
118
118
|
|
119
|
-
app.executor.register_hook(
|
119
|
+
app.executor.register_hook(MonitorHook.new, outer: true)
|
120
120
|
|
121
121
|
elsif config.allow_concurrency == :unsafe
|
122
122
|
# Do nothing, even if we know this is dangerous. This is the
|
@@ -263,8 +263,13 @@ module Rails
|
|
263
263
|
MSG
|
264
264
|
else
|
265
265
|
error = CorrectableError.new("Could not find server '#{server}'.", server, RACK_SERVERS)
|
266
|
+
if error.respond_to?(:detailed_message)
|
267
|
+
formatted_message = error.detailed_message
|
268
|
+
else
|
269
|
+
formatted_message = error.message
|
270
|
+
end
|
266
271
|
<<~MSG
|
267
|
-
#{
|
272
|
+
#{formatted_message}
|
268
273
|
Run `bin/rails server --help` for more options.
|
269
274
|
MSG
|
270
275
|
end
|
data/lib/rails/gem_version.rb
CHANGED
@@ -187,12 +187,12 @@ module Rails
|
|
187
187
|
[
|
188
188
|
options.values_at(
|
189
189
|
:skip_active_record,
|
190
|
-
:skip_action_mailer,
|
191
190
|
:skip_test,
|
192
191
|
:skip_action_cable,
|
193
192
|
:skip_active_job
|
194
193
|
),
|
195
194
|
skip_active_storage?,
|
195
|
+
skip_action_mailer?,
|
196
196
|
skip_action_mailbox?,
|
197
197
|
skip_action_text?
|
198
198
|
].flatten.none?
|
@@ -220,7 +220,11 @@ module Rails
|
|
220
220
|
end
|
221
221
|
|
222
222
|
def skip_active_storage? # :doc:
|
223
|
-
options[:skip_active_storage] || options[:skip_active_record]
|
223
|
+
options[:skip_active_storage] || options[:skip_active_record] || options[:skip_active_job]
|
224
|
+
end
|
225
|
+
|
226
|
+
def skip_action_mailer? # :doc:
|
227
|
+
options[:skip_action_mailer] || options[:skip_active_job]
|
224
228
|
end
|
225
229
|
|
226
230
|
def skip_action_mailbox? # :doc:
|
data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt
CHANGED
@@ -34,13 +34,6 @@
|
|
34
34
|
# implementation.
|
35
35
|
# Rails.application.config.active_support.remove_deprecated_time_with_zone_name = true
|
36
36
|
|
37
|
-
# Change the format of the cache entry.
|
38
|
-
# Changing this default means that all new cache entries added to the cache
|
39
|
-
# will have a different format that is not supported by Rails 6.1 applications.
|
40
|
-
# Only change this value after your application is fully deployed to Rails 7.0
|
41
|
-
# and you have no plans to rollback.
|
42
|
-
# Rails.application.config.active_support.cache_format_version = 7.0
|
43
|
-
|
44
37
|
# Calls `Rails.application.executor.wrap` around test cases.
|
45
38
|
# This makes test cases behave closer to an actual request or job.
|
46
39
|
# Several features that are normally disabled in test, such as Active Record query cache
|
@@ -71,7 +64,7 @@
|
|
71
64
|
# This default means that all columns will be referenced in INSERT queries
|
72
65
|
# regardless of whether they have a default or not.
|
73
66
|
# Rails.application.config.active_record.partial_inserts = false
|
74
|
-
|
67
|
+
|
75
68
|
# Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`.
|
76
69
|
# Rails.application.config.action_controller.raise_on_open_redirects = true
|
77
70
|
|
@@ -82,18 +75,6 @@
|
|
82
75
|
# The `:mini_magick` option is not deprecated; it's fine to keep using it.
|
83
76
|
# Rails.application.config.active_storage.variant_processor = :vips
|
84
77
|
|
85
|
-
# If you're upgrading and haven't set `cookies_serializer` previously, your cookie serializer
|
86
|
-
# was `:marshal`. Convert all cookies to JSON, using the `:hybrid` formatter.
|
87
|
-
#
|
88
|
-
# If you're confident all your cookies are JSON formatted, you can switch to the `:json` formatter.
|
89
|
-
#
|
90
|
-
# Continue to use `:marshal` for backward-compatibility with old cookies.
|
91
|
-
#
|
92
|
-
# If you have configured the serializer elsewhere, you can remove this.
|
93
|
-
#
|
94
|
-
# See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information.
|
95
|
-
# Rails.application.config.action_dispatch.cookies_serializer = :hybrid
|
96
|
-
|
97
78
|
# Enable parameter wrapping for JSON.
|
98
79
|
# Previously this was set in an initializer. It's fine to keep using that initializer if you've customized it.
|
99
80
|
# To disable parameter wrapping entirely, set this config to `false`.
|
@@ -115,3 +96,40 @@
|
|
115
96
|
# "X-Permitted-Cross-Domain-Policies" => "none",
|
116
97
|
# "Referrer-Policy" => "strict-origin-when-cross-origin"
|
117
98
|
# }
|
99
|
+
|
100
|
+
|
101
|
+
# ** Please read carefully, this must be configured in config/application.rb **
|
102
|
+
# Change the format of the cache entry.
|
103
|
+
# Changing this default means that all new cache entries added to the cache
|
104
|
+
# will have a different format that is not supported by Rails 6.1 applications.
|
105
|
+
# Only change this value after your application is fully deployed to Rails 7.0
|
106
|
+
# and you have no plans to rollback.
|
107
|
+
# When you're ready to change format, add this to `config/application.rb` (NOT this file):
|
108
|
+
# config.active_support.cache_format_version = 7.0
|
109
|
+
|
110
|
+
|
111
|
+
# Cookie serializer: 2 options
|
112
|
+
#
|
113
|
+
# If you're upgrading and haven't set `cookies_serializer` previously, your cookie serializer
|
114
|
+
# is `:marshal`. The default for new apps is `:json`.
|
115
|
+
#
|
116
|
+
# Rails.application.config.action_dispatch.cookies_serializer = :json
|
117
|
+
#
|
118
|
+
#
|
119
|
+
# To migrate an existing application to the `:json` serializer, use the `:hybrid` option.
|
120
|
+
#
|
121
|
+
# Rails transparently deserializes existing (Marshal-serialized) cookies on read and
|
122
|
+
# re-writes them in the JSON format.
|
123
|
+
#
|
124
|
+
# It is fine to use `:hybrid` long term; you should do that until you're confident *all* your cookies
|
125
|
+
# have been converted to JSON. To keep using `:hybrid` long term, move this config to its own
|
126
|
+
# initializer or to `config/application.rb`.
|
127
|
+
#
|
128
|
+
# Rails.application.config.action_dispatch.cookies_serializer = :hybrid
|
129
|
+
#
|
130
|
+
#
|
131
|
+
# If your cookies can't yet be serialized to JSON, keep using `:marshal` for backward-compatibility.
|
132
|
+
#
|
133
|
+
# If you have configured the serializer elsewhere, you can remove this section of the file.
|
134
|
+
#
|
135
|
+
# See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information.
|
data/lib/rails/generators.rb
CHANGED
@@ -266,8 +266,14 @@ module Rails
|
|
266
266
|
options = sorted_groups.flat_map(&:last)
|
267
267
|
error = Command::Base::CorrectableError.new("Could not find generator '#{namespace}'.", namespace, options)
|
268
268
|
|
269
|
+
if error.respond_to?(:detailed_message)
|
270
|
+
formatted_message = error.detailed_message
|
271
|
+
else
|
272
|
+
formatted_message = error.message
|
273
|
+
end
|
274
|
+
|
269
275
|
puts <<~MSG
|
270
|
-
#{
|
276
|
+
#{formatted_message}
|
271
277
|
Run `bin/rails generate --help` for more options.
|
272
278
|
MSG
|
273
279
|
end
|
data/lib/rails/railtie.rb
CHANGED
data/lib/rails.rb
CHANGED
@@ -80,6 +80,13 @@ module Rails
|
|
80
80
|
@_env = ActiveSupport::EnvironmentInquirer.new(environment)
|
81
81
|
end
|
82
82
|
|
83
|
+
# Returns the ActiveSupport::ErrorReporter of the current Rails project,
|
84
|
+
# otherwise it returns +nil+ if there is no project.
|
85
|
+
#
|
86
|
+
# Rails.error.handle(IOError) do
|
87
|
+
# # ...
|
88
|
+
# end
|
89
|
+
# Rails.error.report(error)
|
83
90
|
def error
|
84
91
|
application && application.executor.error_reporter
|
85
92
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.
|
4
|
+
version: 7.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.0.
|
19
|
+
version: 7.0.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.0.
|
26
|
+
version: 7.0.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 7.0.
|
33
|
+
version: 7.0.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 7.0.
|
40
|
+
version: 7.0.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 7.0.
|
103
|
+
version: 7.0.4
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 7.0.
|
110
|
+
version: 7.0.4
|
111
111
|
description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
|
112
112
|
email: david@loudthinking.com
|
113
113
|
executables:
|
@@ -422,10 +422,10 @@ licenses:
|
|
422
422
|
- MIT
|
423
423
|
metadata:
|
424
424
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
425
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.0.
|
426
|
-
documentation_uri: https://api.rubyonrails.org/v7.0.
|
425
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.0.4/railties/CHANGELOG.md
|
426
|
+
documentation_uri: https://api.rubyonrails.org/v7.0.4/
|
427
427
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
428
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.0.
|
428
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.0.4/railties
|
429
429
|
rubygems_mfa_required: 'true'
|
430
430
|
post_install_message:
|
431
431
|
rdoc_options:
|