railties 7.0.0 → 7.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cb58ddc9e6fbbf28a0fb9c625cecec9cd282d59ccd697cf37cd1f78f7d25811
4
- data.tar.gz: b6304f9dfa982671da582fb01c63f310b76d3d043aca2826ff5c54acecc7f90c
3
+ metadata.gz: '02971c2aea82d6438c050e658cf682158f9942bd3b2d37a957af8e9869e6e26e'
4
+ data.tar.gz: f448cdadd24a8c84fded45c69536d451ba1e7921bcde12aafd6dc0ef33c44b0b
5
5
  SHA512:
6
- metadata.gz: febb1c2b1fc87226219dc2cf5870c236b801624c9a4d8c62b0853a1e3e033fbfec76e5b418de34774e069aa0b60d8b2c687c68ab729cc7165806974f16373b40
7
- data.tar.gz: a6305f03e1ed58b3afd6a9647b6fb43a48007c08370db1e066c15e135ce159c9adc7ac84c318033264e1c18cafdf2d9446d3e08341e4922c46fb7c7b83a81ff7
6
+ metadata.gz: d199f6437a4650717d50a7a42c76ec847017809ffe1c53e0720c2ae6c9938fbaab00b491c9de61e482b8dca0f10b1c81be3f8d69edfbfd1fdeb9a52322dc89e5
7
+ data.tar.gz: b076e654baa6d781d0c7668e2f034facc363d14fc4245207e586dcf74fe8fc0c18410b1fdd230d979976b42f53beeef5ac47a05dc9f89b1b69259e246aac49d0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## Rails 7.0.1 (January 06, 2022) ##
2
+
3
+ * Prevent duplicate entries in plugin Gemfile.
4
+
5
+ *Jonathan Hefner*
6
+
7
+ * Fix asset pipeline errors for plugin dummy apps.
8
+
9
+ *Jonathan Hefner*
10
+
11
+ * Fix generated route revocation.
12
+
13
+ *Jonathan Hefner*
14
+
15
+ * Addresses an issue in which Sidekiq jobs could not reload certain
16
+ namespaces.
17
+
18
+ See [fxn/zeitwerk#198](https://github.com/fxn/zeitwerk/issues/198) for
19
+ details.
20
+
21
+ *Xavier Noria*
22
+
23
+ * Fix plugin generator to a plugin that pass all the tests.
24
+
25
+ *Rafael Mendonça França*
26
+
27
+
1
28
  ## Rails 7.0.0 (December 15, 2021) ##
2
29
 
3
30
  * No changes.
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2004-2021 David Heinemeier Hansson
1
+ Copyright (c) 2004-2022 David Heinemeier Hansson
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "zeitwerk"
4
3
  require "active_support/core_ext/string/inflections"
5
4
  require "active_support/core_ext/array/conversions"
6
5
  require "active_support/descendants_tracker"
@@ -10,6 +10,7 @@ require "active_support/hash_with_indifferent_access"
10
10
  require "active_support/configuration_file"
11
11
  require "rails/engine"
12
12
  require "rails/secrets"
13
+ require "rails/autoloaders"
13
14
 
14
15
  module Rails
15
16
  # An Engine with the responsibility of coordinating the whole boot process.
@@ -95,7 +96,7 @@ module Rails
95
96
 
96
97
  attr_accessor :assets, :sandbox
97
98
  alias_method :sandbox?, :sandbox
98
- attr_reader :reloaders, :reloader, :executor
99
+ attr_reader :reloaders, :reloader, :executor, :autoloaders
99
100
 
100
101
  delegate :default_url_options, :default_url_options=, to: :routes
101
102
 
@@ -117,6 +118,8 @@ module Rails
117
118
  @reloader = Class.new(ActiveSupport::Reloader)
118
119
  @reloader.executor = @executor
119
120
 
121
+ @autoloaders = Rails::Autoloaders.new
122
+
120
123
  # are these actually used?
121
124
  @initial_variable_values = initial_variable_values
122
125
  @block = block
@@ -3,7 +3,7 @@
3
3
  require "active_support/inflector"
4
4
 
5
5
  module Rails
6
- module Autoloaders
6
+ class Autoloaders
7
7
  module Inflector # :nodoc:
8
8
  # Concurrent::Map is not needed. This is a private class, and overrides
9
9
  # must be defined while the application boots.
@@ -1,44 +1,48 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "zeitwerk"
4
-
5
3
  module Rails
6
- module Autoloaders # :nodoc:
4
+ class Autoloaders # :nodoc:
7
5
  require_relative "autoloaders/inflector"
8
6
 
9
- class << self
10
- include Enumerable
11
-
12
- def main
13
- @main ||= Zeitwerk::Loader.new.tap do |loader|
14
- loader.tag = "rails.main"
15
- loader.inflector = Inflector
16
- end
17
- end
18
-
19
- def once
20
- @once ||= Zeitwerk::Loader.new.tap do |loader|
21
- loader.tag = "rails.once"
22
- loader.inflector = Inflector
23
- end
24
- end
25
-
26
- def each
27
- yield main
28
- yield once
29
- end
30
-
31
- def logger=(logger)
32
- each { |loader| loader.logger = logger }
33
- end
34
-
35
- def log!
36
- each(&:log!)
37
- end
38
-
39
- def zeitwerk_enabled?
40
- true
41
- end
7
+ include Enumerable
8
+
9
+ attr_reader :main, :once
10
+
11
+ def initialize
12
+ # This `require` delays loading the library on purpose.
13
+ #
14
+ # In Rails 7.0.0, railties/lib/rails.rb loaded Zeitwerk as a side-effect,
15
+ # but a couple of edge cases related to Bundler and Bootsnap showed up.
16
+ # They had to do with order of decoration of `Kernel#require`, something
17
+ # the three of them do.
18
+ #
19
+ # Delaying this `require` up to this point is a convenient trade-off.
20
+ require "zeitwerk"
21
+
22
+ @main = Zeitwerk::Loader.new
23
+ @main.tag = "rails.main"
24
+ @main.inflector = Inflector
25
+
26
+ @once = Zeitwerk::Loader.new
27
+ @once.tag = "rails.once"
28
+ @once.inflector = Inflector
29
+ end
30
+
31
+ def each
32
+ yield main
33
+ yield once
34
+ end
35
+
36
+ def logger=(logger)
37
+ each { |loader| loader.logger = logger }
38
+ end
39
+
40
+ def log!
41
+ each(&:log!)
42
+ end
43
+
44
+ def zeitwerk_enabled?
45
+ true
42
46
  end
43
47
  end
44
48
  end
@@ -97,15 +97,18 @@ module Rails
97
97
  def db_config
98
98
  return @db_config if defined?(@db_config)
99
99
 
100
- # We need to check whether the user passed the database the
101
- # first time around to show a consistent error message to people
102
- # relying on 2-level database configuration.
103
-
104
- @db_config = configurations.configs_for(env_name: environment, name: database, include_hidden: true)
100
+ # If the user provided a database, use that. Otherwise find
101
+ # the first config in the database.yml
102
+ if database
103
+ @db_config = configurations.configs_for(env_name: environment, name: database, include_hidden: true)
104
+ else
105
+ @db_config = configurations.find_db_config(environment)
106
+ end
105
107
 
106
108
  unless @db_config
109
+ missing_db = database ? "'#{database}' database is not" : "No databases are"
107
110
  raise ActiveRecord::AdapterNotSpecified,
108
- "'#{database}' database is not configured for '#{environment}'. Available configuration: #{configurations.inspect}"
111
+ "#{missing_db} configured for '#{environment}'. Available configuration: #{configurations.inspect}"
109
112
  end
110
113
 
111
114
  @db_config
@@ -116,7 +119,7 @@ module Rails
116
119
  end
117
120
 
118
121
  def database
119
- @options.fetch(:database, "primary")
122
+ @options[:database]
120
123
  end
121
124
 
122
125
  private
@@ -9,7 +9,7 @@ module Rails
9
9
  module VERSION
10
10
  MAJOR = 7
11
11
  MINOR = 0
12
- TINY = 0
12
+ TINY = 1
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -279,26 +279,32 @@ module Rails
279
279
  # route "root 'welcome#index'"
280
280
  # route "root 'admin#index'", namespace: :admin
281
281
  def route(routing_code, namespace: nil)
282
- routing_code = Array(namespace).reverse.reduce(routing_code) do |code, ns|
283
- "namespace :#{ns} do\n#{optimize_indentation(code, 2)}end"
282
+ namespace = Array(namespace)
283
+ namespace_pattern = route_namespace_pattern(namespace)
284
+ routing_code = namespace.reverse.reduce(routing_code) do |code, name|
285
+ "namespace :#{name} do\n#{rebase_indentation(code, 2)}end"
284
286
  end
285
287
 
286
288
  log :route, routing_code
287
289
 
288
- after_pattern = Array(namespace).each_with_index.reverse_each.reduce(nil) do |pattern, (ns, i)|
289
- margin = "\\#{i + 1}[ ]{2}"
290
- "(?:(?:^[ ]*\n|^#{margin}.*\n)*?^(#{margin})namespace :#{ns} do\n#{pattern})?"
291
- end.then do |pattern|
292
- /^([ ]*).+\.routes\.draw do[ ]*\n#{pattern}/
293
- end
294
-
295
290
  in_root do
296
- if existing = match_file("config/routes.rb", after_pattern)
297
- base_indent, *, prev_indent = existing.captures.compact.map(&:length)
298
- routing_code = optimize_indentation(routing_code, base_indent + 2).lines.grep_v(/^[ ]{,#{prev_indent}}\S/).join
291
+ if namespace_match = match_file("config/routes.rb", namespace_pattern)
292
+ base_indent, *, existing_block_indent = namespace_match.captures.compact.map(&:length)
293
+ existing_line_pattern = /^[ ]{,#{existing_block_indent}}\S.+\n?/
294
+ routing_code = rebase_indentation(routing_code, base_indent + 2).gsub(existing_line_pattern, "")
295
+ namespace_pattern = /#{Regexp.escape namespace_match.to_s}/
299
296
  end
300
297
 
301
- inject_into_file "config/routes.rb", routing_code, after: after_pattern, verbose: false, force: false
298
+ inject_into_file "config/routes.rb", routing_code, after: namespace_pattern, verbose: false, force: false
299
+
300
+ if behavior == :revoke && namespace.any? && namespace_match
301
+ empty_block_pattern = /(#{namespace_pattern})((?:\s*end\n){1,#{namespace.size}})/
302
+ gsub_file "config/routes.rb", empty_block_pattern, verbose: false, force: true do |matched|
303
+ beginning, ending = empty_block_pattern.match(matched).captures
304
+ ending.sub!(/\A\s*end\n/, "") while !ending.empty? && beginning.sub!(/^[ ]*namespace .+ do\n\s*\z/, "")
305
+ beginning + ending
306
+ end
307
+ end
302
308
  end
303
309
  end
304
310
 
@@ -363,6 +369,7 @@ module Rails
363
369
  return "#{value}\n" unless value.is_a?(String)
364
370
  "#{value.strip_heredoc.indent(amount).chomp}\n"
365
371
  end
372
+ alias rebase_indentation optimize_indentation
366
373
 
367
374
  # Indent the +Gemfile+ to the depth of @indentation
368
375
  def indentation # :doc:
@@ -387,6 +394,16 @@ module Rails
387
394
  def match_file(path, pattern)
388
395
  File.read(path).match(pattern) if File.exist?(path)
389
396
  end
397
+
398
+ def route_namespace_pattern(namespace)
399
+ namespace.each_with_index.reverse_each.reduce(nil) do |pattern, (name, i)|
400
+ cummulative_margin = "\\#{i + 1}[ ]{2}"
401
+ blank_or_indented_line = "^[ ]*\n|^#{cummulative_margin}.*\n"
402
+ "(?:(?:#{blank_or_indented_line})*?^(#{cummulative_margin})namespace :#{name} do\n#{pattern})?"
403
+ end.then do |pattern|
404
+ /^([ ]*).+\.routes\.draw do[ ]*\n#{pattern}/
405
+ end
406
+ end
390
407
  end
391
408
  end
392
409
  end
@@ -108,16 +108,18 @@ module Rails
108
108
 
109
109
  private
110
110
  def gemfile_entries # :doc:
111
- [rails_gemfile_entry,
112
- asset_pipeline_gemfile_entry,
113
- database_gemfile_entry,
114
- web_server_gemfile_entry,
115
- javascript_gemfile_entry,
116
- hotwire_gemfile_entry,
117
- css_gemfile_entry,
118
- jbuilder_gemfile_entry,
119
- psych_gemfile_entry,
120
- cable_gemfile_entry].flatten.find_all(&@gem_filter)
111
+ [
112
+ rails_gemfile_entry,
113
+ asset_pipeline_gemfile_entry,
114
+ database_gemfile_entry,
115
+ web_server_gemfile_entry,
116
+ javascript_gemfile_entry,
117
+ hotwire_gemfile_entry,
118
+ css_gemfile_entry,
119
+ jbuilder_gemfile_entry,
120
+ psych_gemfile_entry,
121
+ cable_gemfile_entry,
122
+ ].flatten.compact.select(&@gem_filter)
121
123
  end
122
124
 
123
125
  def builder # :doc:
@@ -159,7 +161,8 @@ module Rails
159
161
  end
160
162
 
161
163
  def database_gemfile_entry # :doc:
162
- return [] if options[:skip_active_record]
164
+ return if options[:skip_active_record]
165
+
163
166
  gem_name, gem_version = gem_for_database
164
167
  GemfileEntry.version gem_name, gem_version,
165
168
  "Use #{options[:database]} as the database for Active Record"
@@ -170,15 +173,13 @@ module Rails
170
173
  end
171
174
 
172
175
  def asset_pipeline_gemfile_entry
173
- return [] if options[:skip_asset_pipeline]
176
+ return if options[:skip_asset_pipeline]
174
177
 
175
178
  if options[:asset_pipeline] == "sprockets"
176
179
  GemfileEntry.floats "sprockets-rails",
177
180
  "The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]"
178
181
  elsif options[:asset_pipeline] == "propshaft"
179
182
  GemfileEntry.floats "propshaft", "The modern asset pipeline for Rails [https://github.com/rails/propshaft]"
180
- else
181
- []
182
183
  end
183
184
  end
184
185
 
@@ -264,20 +265,13 @@ module Rails
264
265
  new(name, nil, comment, path: path)
265
266
  end
266
267
 
267
- def version
268
- version = super
269
-
270
- if version.is_a?(Array)
271
- version.join('", "')
272
- else
273
- version
274
- end
275
- end
276
-
277
268
  def to_s
278
- [ ("# #{comment}\n" if comment),
279
- ("# " if commented_out), "gem \"#{name}\"", (", \"#{version}\"" if version),
280
- *options.map { |key, val| ", #{key}: #{val.inspect}" }
269
+ [
270
+ (comment.gsub(/^/, "# ").chomp + "\n" if comment),
271
+ ("# " if commented_out),
272
+ "gem \"#{name}\"",
273
+ *Array(version).map { |constraint| ", \"#{constraint}\"" },
274
+ *options.map { |key, value| ", #{key}: #{value.inspect}" },
281
275
  ].compact.join
282
276
  end
283
277
  end
@@ -314,12 +308,12 @@ module Rails
314
308
  end
315
309
 
316
310
  def jbuilder_gemfile_entry
317
- return [] if options[:skip_jbuilder]
311
+ return if options[:skip_jbuilder]
318
312
  GemfileEntry.new "jbuilder", nil, "Build JSON APIs with ease [https://github.com/rails/jbuilder]", {}, options[:api]
319
313
  end
320
314
 
321
315
  def javascript_gemfile_entry
322
- return [] if options[:skip_javascript]
316
+ return if options[:skip_javascript]
323
317
 
324
318
  if adjusted_javascript_option == "importmap"
325
319
  GemfileEntry.floats "importmap-rails", "Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]"
@@ -329,7 +323,7 @@ module Rails
329
323
  end
330
324
 
331
325
  def hotwire_gemfile_entry
332
- return [] if options[:skip_javascript] || options[:skip_hotwire]
326
+ return if options[:skip_javascript] || options[:skip_hotwire]
333
327
 
334
328
  turbo_rails_entry =
335
329
  GemfileEntry.floats "turbo-rails", "Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]"
@@ -355,7 +349,7 @@ module Rails
355
349
  end
356
350
 
357
351
  def css_gemfile_entry
358
- return [] unless options[:css]
352
+ return unless options[:css]
359
353
 
360
354
  if !using_node? && options[:css] == "tailwind"
361
355
  GemfileEntry.floats "tailwindcss-rails", "Use Tailwind CSS [https://github.com/rails/tailwindcss-rails]"
@@ -365,7 +359,7 @@ module Rails
365
359
  end
366
360
 
367
361
  def psych_gemfile_entry
368
- return [] unless defined?(Rubinius)
362
+ return unless defined?(Rubinius)
369
363
 
370
364
  comment = "Use Psych as the YAML engine, instead of Syck, so serialized " \
371
365
  "data can be read safely from different rubies (see http://git.io/uuLVag)"
@@ -373,11 +367,10 @@ module Rails
373
367
  end
374
368
 
375
369
  def cable_gemfile_entry
376
- return [] if options[:skip_action_cable]
370
+ return if options[:skip_action_cable]
371
+
377
372
  comment = "Use Redis adapter to run Action Cable in production"
378
- gems = []
379
- gems << GemfileEntry.new("redis", "~> 4.0", comment, {}, true)
380
- gems
373
+ GemfileEntry.new("redis", "~> 4.0", comment, {}, true)
381
374
  end
382
375
 
383
376
  def bundle_command(command, env = {})
@@ -8,7 +8,7 @@ require "active_support/core_ext/integer/time"
8
8
  Rails.application.configure do
9
9
  # Settings specified here will take precedence over those in config/application.rb.
10
10
 
11
- # Turn false under Spring and add config.action_view.cache_template_loading = true
11
+ # Turn false under Spring and add config.action_view.cache_template_loading = true.
12
12
  config.cache_classes = true
13
13
 
14
14
  # Eager loading loads your whole application. When running a single test locally,
@@ -226,6 +226,10 @@ module Rails
226
226
  def initialize(*args)
227
227
  @dummy_path = nil
228
228
  super
229
+
230
+ if !engine? || !with_dummy_app?
231
+ self.options = options.merge(skip_asset_pipeline: true).freeze
232
+ end
229
233
  end
230
234
 
231
235
  public_task :set_default_accessors!
@@ -309,6 +313,33 @@ module Rails
309
313
  end
310
314
 
311
315
  private
316
+ def gemfile_entries
317
+ [
318
+ rails_gemfile_entry,
319
+ simplify_gemfile_entries(
320
+ database_gemfile_entry,
321
+ asset_pipeline_gemfile_entry,
322
+ ),
323
+ ].flatten.compact
324
+ end
325
+
326
+ def rails_gemfile_entry
327
+ if options[:skip_gemspec]
328
+ super
329
+ elsif rails_prerelease?
330
+ super.dup.tap do |entry|
331
+ entry.comment = <<~COMMENT
332
+ Your gem is dependent on a prerelease version of Rails. Once you can lock this
333
+ dependency down to a specific version, move it to your gemspec.
334
+ COMMENT
335
+ end
336
+ end
337
+ end
338
+
339
+ def simplify_gemfile_entries(*gemfile_entries)
340
+ gemfile_entries.flatten.compact.map { |entry| GemfileEntry.floats(entry.name) }
341
+ end
342
+
312
343
  def create_dummy_app(path = nil)
313
344
  dummy_path(path) if path
314
345
 
@@ -1,32 +1,19 @@
1
1
  source "https://rubygems.org"
2
2
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+ <% unless options[:skip_gemspec] -%>
3
4
 
4
- <% if options[:skip_gemspec] -%>
5
- <%= "# " if rails_prerelease? -%>gem "rails", "<%= Array(rails_version_specifier).join("', '") %>"
6
- <% else -%>
7
5
  # Specify your gem's dependencies in <%= name %>.gemspec.
8
6
  gemspec
9
7
  <% end -%>
10
- <% unless options[:skip_active_record] -%>
11
-
12
- group :development do
13
- gem "<%= gem_for_database[0] %>"
14
- end
15
- <% end -%>
16
-
17
- <% if rails_prerelease? -%>
18
- # Your gem is dependent on a prerelease version of Rails. Once you can lock this
19
- # dependency down to a specific version, move it to your gemspec.
20
- <% gemfile_entries.each do |gemfile_entry| -%>
8
+ <% gemfile_entries.each do |gemfile_entry| %>
21
9
  <%= gemfile_entry %>
22
- <% end -%>
23
-
24
10
  <% end -%>
25
11
  <% if RUBY_ENGINE == "ruby" -%>
26
- # Start debugger with binding.b -- Read more: https://github.com/ruby/debug
27
- # gem "debug", ">= 1.0.0", group: %i[ development test ]
12
+
13
+ # Start debugger with binding.b [https://github.com/ruby/debug]
14
+ # gem "debug", ">= 1.0.0"
28
15
  <% end -%>
29
- <% if RUBY_PLATFORM.match(/bccwin|cygwin|emx|mingw|mswin|wince|java/) -%>
16
+ <% if RUBY_PLATFORM.match?(/bccwin|cygwin|emx|mingw|mswin|wince|java/) -%>
30
17
 
31
- gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby]
18
+ gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]
32
19
  <% end -%>
data/lib/rails.rb CHANGED
@@ -12,7 +12,6 @@ require "active_support/core_ext/object/blank"
12
12
 
13
13
  require "rails/application"
14
14
  require "rails/version"
15
- require "rails/autoloaders"
16
15
 
17
16
  require "active_support/railtie"
18
17
  require "action_dispatch/railtie"
@@ -115,7 +114,7 @@ module Rails
115
114
  end
116
115
 
117
116
  def autoloaders
118
- Autoloaders
117
+ application.autoloaders
119
118
  end
120
119
  end
121
120
  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.0
4
+ version: 7.0.1
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: 2021-12-15 00:00:00.000000000 Z
11
+ date: 2022-01-06 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.0
19
+ version: 7.0.1
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.0
26
+ version: 7.0.1
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.0
33
+ version: 7.0.1
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.0
40
+ version: 7.0.1
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.0
103
+ version: 7.0.1
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.0
110
+ version: 7.0.1
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.0/railties/CHANGELOG.md
426
- documentation_uri: https://api.rubyonrails.org/v7.0.0/
425
+ changelog_uri: https://github.com/rails/rails/blob/v7.0.1/railties/CHANGELOG.md
426
+ documentation_uri: https://api.rubyonrails.org/v7.0.1/
427
427
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
428
- source_code_uri: https://github.com/rails/rails/tree/v7.0.0/railties
428
+ source_code_uri: https://github.com/rails/rails/tree/v7.0.1/railties
429
429
  rubygems_mfa_required: 'true'
430
430
  post_install_message:
431
431
  rdoc_options: