railties 7.2.0.beta3 → 7.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf3f01460d4ca0bad491a4eb63f5d7f3872791c1eb2c91aeb5885f5ed868fb71
4
- data.tar.gz: 4b10b079ba5209880d59305ef756fc83d5366bf0063601022d0701ee2143c379
3
+ metadata.gz: bfbc258d03c709473511d240ffab0b5bbb1b0f439158c768c113054dea8d296a
4
+ data.tar.gz: 9640e2920bd9ada2cec2f8d684ddcb40f778be9a44dba03be29b5db3fb820b97
5
5
  SHA512:
6
- metadata.gz: 0fe18dfaf75c1fb4bfe93d2216e73e17cf165383f48f2dadb4eb769c07cffaafb16bbae86159297f22233ae9e341dca4e3426e549d5a0cf785e41f678d220ca3
7
- data.tar.gz: 42448d197461c0ef1de2298b23da0abd4e3ad55b6389a892077ebba2e9844c4c5914dda5a2b85694de78cc57ba6d1b163a37adf42d4eb54b5771d47294bc661d
6
+ metadata.gz: 8ab08f5e3bb2fc56427effe82fc71728e4fc0294ac20b74eaebc518a8acf90eed0efab83744a323ea8c5587952097f164b38ffc1d8c95cc6a0e9903f306608f9
7
+ data.tar.gz: 873c2117ffa487d4d82c956e02935180277dbf9157476e207a2f6f1f92f650f2c534ed956b3437e580e22b32ad4bb7b58fcdd39725cf6f66f2e0512bba2215d9
data/CHANGELOG.md CHANGED
@@ -1,14 +1,9 @@
1
- ## Rails 7.2.0.beta3 (July 11, 2024) ##
1
+ ## Rails 7.2.0 (August 09, 2024) ##
2
2
 
3
- * No changes.
3
+ * The new `bin/rails boot` command boots the application and exits. Supports the
4
+ standard `-e/--environment` options.
4
5
 
5
-
6
- ## Rails 7.2.0.beta2 (June 04, 2024) ##
7
-
8
- * No changes.
9
-
10
-
11
- ## Rails 7.2.0.beta1 (May 29, 2024) ##
6
+ *Xavier Noria*
12
7
 
13
8
  * Create a Dev Container Generator that generates a Dev Container setup based on the current configuration
14
9
  of the application. Usage:
@@ -500,7 +500,7 @@ module Rails
500
500
 
501
501
  def secret_key_base
502
502
  @secret_key_base || begin
503
- self.secret_key_base = if Rails.env.local? || ENV["SECRET_KEY_BASE_DUMMY"]
503
+ self.secret_key_base = if generate_local_secret?
504
504
  generate_local_secret
505
505
  else
506
506
  ENV["SECRET_KEY_BASE"] || Rails.application.credentials.secret_key_base
@@ -509,7 +509,9 @@ module Rails
509
509
  end
510
510
 
511
511
  def secret_key_base=(new_secret_key_base)
512
- if new_secret_key_base.is_a?(String) && new_secret_key_base.present?
512
+ if new_secret_key_base.nil? && generate_local_secret?
513
+ @secret_key_base = generate_local_secret
514
+ elsif new_secret_key_base.is_a?(String) && new_secret_key_base.present?
513
515
  @secret_key_base = new_secret_key_base
514
516
  elsif new_secret_key_base
515
517
  raise ArgumentError, "`secret_key_base` for #{Rails.env} environment must be a type of String`"
@@ -635,6 +637,10 @@ module Rails
635
637
 
636
638
  File.binread(key_file)
637
639
  end
640
+
641
+ def generate_local_secret?
642
+ Rails.env.local? || ENV["SECRET_KEY_BASE_DUMMY"]
643
+ end
638
644
  end
639
645
  end
640
646
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/command/environment_argument"
4
+
5
+ module Rails
6
+ module Command
7
+ class BootCommand < Base # :nodoc:
8
+ include EnvironmentArgument
9
+
10
+ desc "boot", "Boot the application and exit"
11
+ def perform(*) = boot_application!
12
+ end
13
+ end
14
+ end
@@ -32,7 +32,7 @@ module Rails
32
32
  run_prepare_task if self.args.none?(EXACT_TEST_ARGUMENT_PATTERN)
33
33
  Rails::TestUnit::Runner.run(args)
34
34
  rescue Rails::TestUnit::InvalidTestError => error
35
- say error.message
35
+ raise ArgumentError, error.message
36
36
  end
37
37
 
38
38
  # Define Thor tasks to avoid going through Rake and booting twice when using bin/rails test:*
@@ -10,7 +10,7 @@ module Rails
10
10
  MAJOR = 7
11
11
  MINOR = 2
12
12
  TINY = 0
13
- PRE = "beta3"
13
+ PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -4,8 +4,6 @@
4
4
  # docker build -t my-app .
5
5
  # docker run -d -p 80:80 -p 443:443 --name my-app -e RAILS_MASTER_KEY=<value from config/master.key> my-app
6
6
 
7
- # For a containerized dev environment, see Dev Containers: https://guides.rubyonrails.org/getting_started_with_devcontainer.html
8
-
9
7
  # Make sure RUBY_VERSION matches the Ruby version in .ruby-version
10
8
  ARG RUBY_VERSION=<%= gem_ruby_version %>
11
9
  FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base
@@ -1,7 +1,7 @@
1
1
  require "fileutils"
2
2
 
3
3
  APP_ROOT = File.expand_path("..", __dir__)
4
- APP_NAME = "<%= app_name %>"
4
+ APP_NAME = "<%= app_name.dasherize %>"
5
5
 
6
6
  def system!(*args)
7
7
  system(*args, exception: true)
@@ -23,27 +23,6 @@
23
23
  threads_count = ENV.fetch("RAILS_MAX_THREADS", 3)
24
24
  threads threads_count, threads_count
25
25
 
26
- # Specifies the `environment` that Puma will run in.
27
- rails_env = ENV.fetch("RAILS_ENV", "development")
28
- environment rails_env
29
-
30
- case rails_env
31
- when "production"
32
- # If you are running more than 1 thread per process, the workers count
33
- # should be equal to the number of processors (CPU cores) in production.
34
- #
35
- # Automatically detect the number of available processors in production.
36
- require "concurrent-ruby"
37
- workers_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.available_processor_count })
38
- workers workers_count if workers_count > 1
39
-
40
- preload_app!
41
- when "development"
42
- # Specifies a very generous `worker_timeout` so that the worker
43
- # isn't killed by Puma when suspended by a debugger.
44
- worker_timeout 3600
45
- end
46
-
47
26
  # Specifies the `port` that Puma will listen on to receive requests; default is 3000.
48
27
  port ENV.fetch("PORT", 3000)
49
28
 
@@ -20,7 +20,7 @@ jobs:
20
20
  ruby-version: .ruby-version
21
21
  bundler-cache: true
22
22
 
23
- - name: Scan for security vulnerabilities in Ruby dependencies
23
+ - name: Scan for common Rails security vulnerabilities using static analysis
24
24
  run: bin/brakeman --no-pager
25
25
 
26
26
  <% end -%>
@@ -40,7 +40,7 @@ module Rails
40
40
  return unless options[:system_test]
41
41
  return unless File.exist?("test/application_system_test_case.rb")
42
42
 
43
- gsub_file("test/application_system_test_case.rb", /^(\s*driven_by\b.*)/, system_test_configuration)
43
+ gsub_file("test/application_system_test_case.rb", /^\s*driven_by\b.*/, system_test_configuration)
44
44
  end
45
45
 
46
46
  def update_database_yml
@@ -148,17 +148,17 @@ module Rails
148
148
  end
149
149
 
150
150
  def system_test_configuration
151
- <<~'RUBY'
152
- if ENV["CAPYBARA_SERVER_PORT"]
153
- served_by host: "rails-app", port: ENV["CAPYBARA_SERVER_PORT"]
154
-
155
- driven_by :selenium, using: :headless_chrome, screen_size: [ 1400, 1400 ], options: {
156
- browser: :remote,
157
- url: "http://#{ENV["SELENIUM_HOST"]}:4444"
158
- }
159
- else
160
- driven_by :selenium, using: :headless_chrome, screen_size: [ 1400, 1400 ]
161
- end
151
+ optimize_indentation(<<-'RUBY', 2)
152
+ if ENV["CAPYBARA_SERVER_PORT"]
153
+ served_by host: "rails-app", port: ENV["CAPYBARA_SERVER_PORT"]
154
+
155
+ driven_by :selenium, using: :headless_chrome, screen_size: [ 1400, 1400 ], options: {
156
+ browser: :remote,
157
+ url: "http://#{ENV["SELENIUM_HOST"]}:4444"
158
+ }
159
+ else
160
+ driven_by :selenium, using: :headless_chrome, screen_size: [ 1400, 1400 ]
161
+ end
162
162
  RUBY
163
163
  end
164
164
  end
@@ -26,7 +26,7 @@ services:
26
26
  <%- if options[:system_test] -%>
27
27
 
28
28
  selenium:
29
- image: seleniarm/standalone-chromium
29
+ image: selenium/standalone-chromium
30
30
  restart: unless-stopped
31
31
  <%- end -%>
32
32
 
@@ -58,15 +58,20 @@ module Rails
58
58
  patterns = extract_filters(argv)
59
59
  tests = list_tests(patterns)
60
60
  tests.to_a.each do |path|
61
- require File.expand_path(path)
61
+ abs_path = File.expand_path(path)
62
+ require abs_path
62
63
  rescue LoadError => exception
63
- all_tests = list_tests([default_test_glob])
64
- corrections = DidYouMean::SpellChecker.new(dictionary: all_tests).correct(path)
64
+ if exception.path == abs_path
65
+ all_tests = list_tests([default_test_glob])
66
+ corrections = DidYouMean::SpellChecker.new(dictionary: all_tests).correct(path)
65
67
 
66
- if corrections.empty?
67
- raise exception
68
+ if corrections.empty?
69
+ raise exception
70
+ end
71
+ raise InvalidTestError.new(path, DidYouMean::Formatter.message_for(corrections))
72
+ else
73
+ raise
68
74
  end
69
- raise InvalidTestError.new(path, DidYouMean::Formatter.message_for(corrections))
70
75
  end
71
76
  end
72
77
 
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.2.0.beta3
4
+ version: 7.2.0
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: 2024-07-11 00:00:00.000000000 Z
11
+ date: 2024-08-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.2.0.beta3
19
+ version: 7.2.0
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.2.0.beta3
26
+ version: 7.2.0
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.2.0.beta3
33
+ version: 7.2.0
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.2.0.beta3
40
+ version: 7.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rackup
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +120,14 @@ dependencies:
120
120
  requirements:
121
121
  - - '='
122
122
  - !ruby/object:Gem::Version
123
- version: 7.2.0.beta3
123
+ version: 7.2.0
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - '='
129
129
  - !ruby/object:Gem::Version
130
- version: 7.2.0.beta3
130
+ version: 7.2.0
131
131
  description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
132
132
  email: david@loudthinking.com
133
133
  executables:
@@ -170,6 +170,7 @@ files:
170
170
  - lib/rails/commands/about/about_command.rb
171
171
  - lib/rails/commands/app/update_command.rb
172
172
  - lib/rails/commands/application/application_command.rb
173
+ - lib/rails/commands/boot/boot_command.rb
173
174
  - lib/rails/commands/console/console_command.rb
174
175
  - lib/rails/commands/console/irb_console.rb
175
176
  - lib/rails/commands/credentials/USAGE
@@ -468,10 +469,10 @@ licenses:
468
469
  - MIT
469
470
  metadata:
470
471
  bug_tracker_uri: https://github.com/rails/rails/issues
471
- changelog_uri: https://github.com/rails/rails/blob/v7.2.0.beta3/railties/CHANGELOG.md
472
- documentation_uri: https://api.rubyonrails.org/v7.2.0.beta3/
472
+ changelog_uri: https://github.com/rails/rails/blob/v7.2.0/railties/CHANGELOG.md
473
+ documentation_uri: https://api.rubyonrails.org/v7.2.0/
473
474
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
474
- source_code_uri: https://github.com/rails/rails/tree/v7.2.0.beta3/railties
475
+ source_code_uri: https://github.com/rails/rails/tree/v7.2.0/railties
475
476
  rubygems_mfa_required: 'true'
476
477
  post_install_message:
477
478
  rdoc_options: