railties 7.0.3.1 → 7.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|