railties 7.0.8.1 → 7.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +582 -211
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.md +99 -0
  5. data/README.rdoc +4 -4
  6. data/lib/minitest/rails_plugin.rb +63 -0
  7. data/lib/rails/api/task.rb +35 -4
  8. data/lib/rails/app_updater.rb +1 -1
  9. data/lib/rails/application/bootstrap.rb +12 -3
  10. data/lib/rails/application/configuration.rb +179 -67
  11. data/lib/rails/application/default_middleware_stack.rb +8 -2
  12. data/lib/rails/application/dummy_config.rb +19 -0
  13. data/lib/rails/application/finisher.rb +40 -33
  14. data/lib/rails/application.rb +112 -24
  15. data/lib/rails/backtrace_cleaner.rb +1 -1
  16. data/lib/rails/cli.rb +5 -2
  17. data/lib/rails/command/actions.rb +10 -12
  18. data/lib/rails/command/base.rb +55 -53
  19. data/lib/rails/command/environment_argument.rb +32 -16
  20. data/lib/rails/command/helpers/editor.rb +17 -12
  21. data/lib/rails/command.rb +84 -33
  22. data/lib/rails/commands/about/about_command.rb +14 -0
  23. data/lib/rails/commands/application/application_command.rb +2 -0
  24. data/lib/rails/commands/console/console_command.rb +14 -14
  25. data/lib/rails/commands/credentials/USAGE +53 -55
  26. data/lib/rails/commands/credentials/credentials_command/diffing.rb +5 -3
  27. data/lib/rails/commands/credentials/credentials_command.rb +64 -70
  28. data/lib/rails/commands/db/system/change/change_command.rb +2 -1
  29. data/lib/rails/commands/dbconsole/dbconsole_command.rb +25 -115
  30. data/lib/rails/commands/destroy/destroy_command.rb +3 -2
  31. data/lib/rails/commands/dev/dev_command.rb +1 -6
  32. data/lib/rails/commands/encrypted/USAGE +15 -20
  33. data/lib/rails/commands/encrypted/encrypted_command.rb +46 -35
  34. data/lib/rails/commands/gem_help/USAGE +16 -0
  35. data/lib/rails/commands/gem_help/gem_help_command.rb +13 -0
  36. data/lib/rails/commands/generate/generate_command.rb +2 -2
  37. data/lib/rails/commands/help/USAGE +13 -13
  38. data/lib/rails/commands/help/help_command.rb +21 -2
  39. data/lib/rails/commands/initializers/initializers_command.rb +1 -4
  40. data/lib/rails/commands/middleware/middleware_command.rb +17 -0
  41. data/lib/rails/commands/new/new_command.rb +2 -0
  42. data/lib/rails/commands/notes/notes_command.rb +2 -1
  43. data/lib/rails/commands/plugin/plugin_command.rb +2 -0
  44. data/lib/rails/commands/rake/rake_command.rb +25 -22
  45. data/lib/rails/commands/restart/restart_command.rb +14 -0
  46. data/lib/rails/commands/routes/routes_command.rb +13 -1
  47. data/lib/rails/commands/runner/USAGE +14 -12
  48. data/lib/rails/commands/runner/runner_command.rb +32 -20
  49. data/lib/rails/commands/secret/secret_command.rb +13 -0
  50. data/lib/rails/commands/secrets/USAGE +44 -49
  51. data/lib/rails/commands/secrets/secrets_command.rb +19 -38
  52. data/lib/rails/commands/server/server_command.rb +32 -31
  53. data/lib/rails/commands/test/USAGE +14 -0
  54. data/lib/rails/commands/test/test_command.rb +56 -14
  55. data/lib/rails/commands/unused_routes/unused_routes_command.rb +75 -0
  56. data/lib/rails/commands/version/version_command.rb +1 -0
  57. data/lib/rails/configuration.rb +5 -5
  58. data/lib/rails/console/app.rb +1 -4
  59. data/lib/rails/deprecator.rb +7 -0
  60. data/lib/rails/engine/configuration.rb +5 -0
  61. data/lib/rails/engine.rb +32 -11
  62. data/lib/rails/gem_version.rb +4 -4
  63. data/lib/rails/generators/actions.rb +6 -15
  64. data/lib/rails/generators/active_model.rb +2 -2
  65. data/lib/rails/generators/app_base.rb +354 -83
  66. data/lib/rails/generators/app_name.rb +3 -14
  67. data/lib/rails/generators/base.rb +12 -4
  68. data/lib/rails/generators/database.rb +19 -1
  69. data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
  70. data/lib/rails/generators/generated_attribute.rb +2 -0
  71. data/lib/rails/generators/migration.rb +1 -2
  72. data/lib/rails/generators/model_helpers.rb +2 -1
  73. data/lib/rails/generators/rails/app/USAGE +15 -6
  74. data/lib/rails/generators/rails/app/app_generator.rb +84 -60
  75. data/lib/rails/generators/rails/app/templates/Dockerfile.tt +107 -0
  76. data/lib/rails/generators/rails/app/templates/Gemfile.tt +8 -10
  77. data/lib/rails/generators/rails/app/templates/app/views/layouts/mailer.html.erb.tt +1 -1
  78. data/lib/rails/generators/rails/app/templates/bin/setup.tt +10 -1
  79. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +4 -17
  80. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +3 -3
  81. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +0 -2
  82. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +3 -3
  83. data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
  84. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +10 -2
  85. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +28 -24
  86. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +11 -7
  87. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +2 -0
  88. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +2 -2
  89. data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +1 -1
  90. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +223 -0
  91. data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -9
  92. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +11 -13
  93. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +10 -19
  94. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +4 -0
  95. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +6 -4
  96. data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +10 -0
  97. data/lib/rails/generators/rails/app/templates/dockerignore.tt +43 -0
  98. data/lib/rails/generators/rails/app/templates/gitignore.tt +1 -9
  99. data/lib/rails/generators/rails/app/templates/node-version.tt +1 -0
  100. data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +10 -8
  101. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +9 -7
  102. data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
  103. data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +2 -1
  104. data/lib/rails/generators/rails/controller/USAGE +12 -4
  105. data/lib/rails/generators/rails/controller/controller_generator.rb +5 -0
  106. data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -1
  107. data/lib/rails/generators/rails/credentials/credentials_generator.rb +29 -24
  108. data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
  109. data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
  110. data/lib/rails/generators/rails/migration/USAGE +21 -11
  111. data/lib/rails/generators/rails/model/model_generator.rb +4 -0
  112. data/lib/rails/generators/rails/plugin/USAGE +17 -6
  113. data/lib/rails/generators/rails/plugin/plugin_generator.rb +5 -15
  114. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +2 -2
  115. data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
  116. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -17
  117. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -2
  118. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +4 -4
  119. data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
  120. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -1
  121. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +1 -1
  122. data/lib/rails/generators/test_case.rb +2 -2
  123. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +1 -1
  124. data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +4 -1
  125. data/lib/rails/generators.rb +5 -13
  126. data/lib/rails/health_controller.rb +55 -0
  127. data/lib/rails/info.rb +1 -1
  128. data/lib/rails/info_controller.rb +31 -11
  129. data/lib/rails/mailers_controller.rb +15 -5
  130. data/lib/rails/paths.rb +13 -10
  131. data/lib/rails/rack/logger.rb +15 -12
  132. data/lib/rails/rackup/server.rb +15 -0
  133. data/lib/rails/railtie/configuration.rb +14 -1
  134. data/lib/rails/railtie.rb +18 -18
  135. data/lib/rails/ruby_version_check.rb +2 -0
  136. data/lib/rails/source_annotation_extractor.rb +67 -18
  137. data/lib/rails/tasks/engine.rake +8 -8
  138. data/lib/rails/tasks/framework.rake +4 -10
  139. data/lib/rails/tasks/log.rake +1 -1
  140. data/lib/rails/tasks/misc.rake +3 -14
  141. data/lib/rails/tasks/statistics.rake +5 -4
  142. data/lib/rails/tasks/tmp.rake +5 -5
  143. data/lib/rails/tasks/zeitwerk.rake +1 -1
  144. data/lib/rails/tasks.rb +0 -2
  145. data/lib/rails/templates/rails/mailers/email.html.erb +25 -0
  146. data/lib/rails/templates/rails/mailers/index.html.erb +14 -7
  147. data/lib/rails/templates/rails/mailers/mailer.html.erb +11 -5
  148. data/lib/rails/templates/rails/welcome/index.html.erb +1 -0
  149. data/lib/rails/test_help.rb +7 -7
  150. data/lib/rails/test_unit/line_filtering.rb +1 -1
  151. data/lib/rails/test_unit/reporter.rb +6 -2
  152. data/lib/rails/test_unit/runner.rb +36 -18
  153. data/lib/rails/test_unit/test_parser.rb +88 -0
  154. data/lib/rails/test_unit/testing.rake +13 -33
  155. data/lib/rails/version.rb +1 -1
  156. data/lib/rails.rb +15 -15
  157. metadata +66 -31
  158. data/RDOC_MAIN.rdoc +0 -97
  159. data/lib/rails/application/dummy_erb_compiler.rb +0 -18
  160. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +0 -143
  161. data/lib/rails/generators/rails/model/USAGE +0 -113
  162. data/lib/rails/tasks/middleware.rake +0 -9
  163. data/lib/rails/tasks/restart.rake +0 -9
@@ -1,22 +1,6 @@
1
1
  require_relative "boot"
2
2
 
3
- <% if include_all_railties? -%>
4
- require "rails/all"
5
- <% else -%>
6
- require "rails"
7
- # Pick the frameworks you want:
8
- require "active_model/railtie"
9
- <%= comment_if :skip_active_job %>require "active_job/railtie"
10
- <%= comment_if :skip_active_record %>require "active_record/railtie"
11
- <%= comment_if :skip_active_storage %>require "active_storage/engine"
12
- require "action_controller/railtie"
13
- <%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
14
- <%= comment_if :skip_action_mailbox %>require "action_mailbox/engine"
15
- <%= comment_if :skip_action_text %>require "action_text/engine"
16
- require "action_view/railtie"
17
- <%= comment_if :skip_action_cable %>require "action_cable/engine"
18
- <%= comment_if :skip_test %>require "rails/test_unit/railtie"
19
- <% end -%>
3
+ <%= rails_require_statement %>
20
4
 
21
5
  # Require the gems listed in Gemfile, including any gems
22
6
  # you've limited to :test, :development, or :production.
@@ -31,6 +15,9 @@ module <%= app_const_base %>
31
15
  config.load_defaults Rails::VERSION::STRING.to_f
32
16
  <%- end -%>
33
17
 
18
+ # Please, see https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#config-autoload-lib-ignore.
19
+ config.autoload_lib(ignore: %w(assets tasks))
20
+
34
21
  # Configuration for the application, engines, and railties goes here.
35
22
  #
36
23
  # These settings can be overridden in specific environments using the files
@@ -10,15 +10,15 @@ default: &default
10
10
 
11
11
  development:
12
12
  <<: *default
13
- database: db/development.sqlite3
13
+ database: storage/development.sqlite3
14
14
 
15
15
  # Warning: The database defined as "test" will be erased and
16
16
  # re-generated from your development database when you run "rake".
17
17
  # Do not set this db to the same as development or production.
18
18
  test:
19
19
  <<: *default
20
- database: db/test.sqlite3
20
+ database: storage/test.sqlite3
21
21
 
22
22
  production:
23
23
  <<: *default
24
- database: db/production.sqlite3
24
+ database: storage/production.sqlite3
@@ -4,8 +4,6 @@
4
4
  # gem install pg
5
5
  # On macOS with Homebrew:
6
6
  # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7
- # On macOS with MacPorts:
8
- # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9
7
  # On Windows:
10
8
  # gem install pg
11
9
  # Choose the win32 build.
@@ -11,15 +11,15 @@ default: &default
11
11
 
12
12
  development:
13
13
  <<: *default
14
- database: db/development.sqlite3
14
+ database: storage/development.sqlite3
15
15
 
16
16
  # Warning: The database defined as "test" will be erased and
17
17
  # re-generated from your development database when you run "rake".
18
18
  # Do not set this db to the same as development or production.
19
19
  test:
20
20
  <<: *default
21
- database: db/test.sqlite3
21
+ database: storage/test.sqlite3
22
22
 
23
23
  production:
24
24
  <<: *default
25
- database: db/production.sqlite3
25
+ database: storage/production.sqlite3
@@ -0,0 +1,59 @@
1
+ # MySQL. Versions 5.5.8 and up are supported.
2
+ #
3
+ # Install the MySQL driver
4
+ # gem install trilogy
5
+ #
6
+ # Ensure the MySQL gem is defined in your Gemfile
7
+ # gem "trilogy"
8
+ #
9
+ # And be sure to use new-style password hashing:
10
+ # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
11
+ #
12
+ default: &default
13
+ adapter: trilogy
14
+ encoding: utf8mb4
15
+ pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
16
+ username: root
17
+ password:
18
+ <% if mysql_socket -%>
19
+ socket: <%= mysql_socket %>
20
+ <% else -%>
21
+ host: localhost
22
+ <% end -%>
23
+
24
+ development:
25
+ <<: *default
26
+ database: <%= app_name %>_development
27
+
28
+ # Warning: The database defined as "test" will be erased and
29
+ # re-generated from your development database when you run "rake".
30
+ # Do not set this db to the same as development or production.
31
+ test:
32
+ <<: *default
33
+ database: <%= app_name %>_test
34
+
35
+ # As with config/credentials.yml, you never want to store sensitive information,
36
+ # like your database password, in your source code. If your source code is
37
+ # ever seen by anyone, they now have access to your database.
38
+ #
39
+ # Instead, provide the password or a full connection URL as an environment
40
+ # variable when you boot the app. For example:
41
+ #
42
+ # DATABASE_URL="trilogy://myuser:mypass@localhost/somedatabase"
43
+ #
44
+ # If the connection URL is provided in the special DATABASE_URL environment
45
+ # variable, Rails will automatically merge its configuration values on top of
46
+ # the values provided in this file. Alternatively, you can specify a connection
47
+ # URL environment variable explicitly:
48
+ #
49
+ # production:
50
+ # url: <%%= ENV["MY_APP_DATABASE_URL"] %>
51
+ #
52
+ # Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
53
+ # for a full overview on how database connection configuration can be specified.
54
+ #
55
+ production:
56
+ <<: *default
57
+ database: <%= app_name %>_production
58
+ username: <%= app_name %>
59
+ password: <%%= ENV["<%= app_name.upcase %>_DATABASE_PASSWORD"] %>
@@ -6,7 +6,7 @@ Rails.application.configure do
6
6
  # In the development environment your application's code is reloaded any time
7
7
  # it changes. This slows down response time but is perfect for development
8
8
  # since you don't have to restart the web server when you make code changes.
9
- config.cache_classes = false
9
+ config.enable_reloading = true
10
10
 
11
11
  # Do not eager load code on boot.
12
12
  config.eager_load = false
@@ -39,7 +39,7 @@ Rails.application.configure do
39
39
  # Store uploaded files on the local file system (see config/storage.yml for options).
40
40
  config.active_storage.service = :local
41
41
  <%- end -%>
42
- <%- unless skip_action_mailer? -%>
42
+ <%- unless options.skip_action_mailer? -%>
43
43
 
44
44
  # Don't care if the mailer can't send.
45
45
  config.action_mailer.raise_delivery_errors = false
@@ -63,6 +63,11 @@ Rails.application.configure do
63
63
  # Highlight code that triggered database queries in logs.
64
64
  config.active_record.verbose_query_logs = true
65
65
 
66
+ <%- end -%>
67
+ <%- unless options[:skip_active_job] -%>
68
+ # Highlight code that enqueued background job in logs.
69
+ config.active_job.verbose_enqueue_logs = true
70
+
66
71
  <%- end -%>
67
72
  <%- unless skip_sprockets? -%>
68
73
  # Suppress logger output for asset requests.
@@ -77,4 +82,7 @@ Rails.application.configure do
77
82
 
78
83
  # Uncomment if you wish to allow Action Cable access from any origin.
79
84
  # config.action_cable.disable_request_forgery_protection = true
85
+
86
+ # Raise error when a before_action's only/except options reference missing actions
87
+ config.action_controller.raise_on_missing_callback_actions = true
80
88
  end
@@ -4,7 +4,7 @@ Rails.application.configure do
4
4
  # Settings specified here will take precedence over those in config/application.rb.
5
5
 
6
6
  # Code is not reloaded between requests.
7
- config.cache_classes = true
7
+ config.enable_reloading = false
8
8
 
9
9
  # Eager load code on boot. This eager loads most of Rails and
10
10
  # your application in memory, allowing both threaded web servers
@@ -18,13 +18,12 @@ Rails.application.configure do
18
18
  config.action_controller.perform_caching = true
19
19
  <%- end -%>
20
20
 
21
- # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
22
- # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
21
+ # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
22
+ # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
23
23
  # config.require_master_key = true
24
24
 
25
- # Disable serving static files from the `/public` folder by default since
26
- # Apache or NGINX already handles this.
27
- config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
25
+ # Enable static file serving from the `/public` folder (turn off if using NGINX/Apache for it).
26
+ config.public_file_server.enabled = true
28
27
 
29
28
  <%- unless skip_sprockets? -%>
30
29
  # Compress CSS using a preprocessor.
@@ -53,16 +52,26 @@ Rails.application.configure do
53
52
  # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
54
53
 
55
54
  <%- end -%>
55
+ # Assume all access to the app is happening through a SSL-terminating reverse proxy.
56
+ # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
57
+ # config.assume_ssl = true
58
+
56
59
  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
57
- # config.force_ssl = true
60
+ config.force_ssl = true
58
61
 
59
- # Include generic and useful information about system operation, but avoid logging too much
60
- # information to avoid inadvertent exposure of personally identifiable information (PII).
61
- config.log_level = :info
62
+ # Log to STDOUT by default
63
+ config.logger = ActiveSupport::Logger.new(STDOUT)
64
+ .tap { |logger| logger.formatter = ::Logger::Formatter.new }
65
+ .then { |logger| ActiveSupport::TaggedLogging.new(logger) }
62
66
 
63
67
  # Prepend all log lines with the following tags.
64
68
  config.log_tags = [ :request_id ]
65
69
 
70
+ # Info include generic and useful information about system operation, but avoids logging too much
71
+ # information to avoid inadvertent exposure of personally identifiable information (PII). If you
72
+ # want to log everything, set the level to "debug".
73
+ config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info")
74
+
66
75
  # Use a different cache store in production.
67
76
  # config.cache_store = :mem_cache_store
68
77
 
@@ -72,7 +81,7 @@ Rails.application.configure do
72
81
  # config.active_job.queue_name_prefix = "<%= app_name %>_production"
73
82
 
74
83
  <%- end -%>
75
- <%- unless skip_action_mailer? -%>
84
+ <%- unless options.skip_action_mailer? -%>
76
85
  config.action_mailer.perform_caching = false
77
86
 
78
87
  # Ignore bad email addresses and do not raise email delivery errors.
@@ -86,22 +95,17 @@ Rails.application.configure do
86
95
 
87
96
  # Don't log any deprecations.
88
97
  config.active_support.report_deprecations = false
89
-
90
- # Use default logging formatter so that PID and timestamp are not suppressed.
91
- config.log_formatter = ::Logger::Formatter.new
92
-
93
- # Use a different logger for distributed setups.
94
- # require "syslog/logger"
95
- # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
96
-
97
- if ENV["RAILS_LOG_TO_STDOUT"].present?
98
- logger = ActiveSupport::Logger.new(STDOUT)
99
- logger.formatter = config.log_formatter
100
- config.logger = ActiveSupport::TaggedLogging.new(logger)
101
- end
102
98
  <%- unless options.skip_active_record? -%>
103
99
 
104
100
  # Do not dump schema after migrations.
105
101
  config.active_record.dump_schema_after_migration = false
106
102
  <%- end -%>
103
+
104
+ # Enable DNS rebinding protection and other `Host` header attacks.
105
+ # config.hosts = [
106
+ # "example.com", # Allow requests from example.com
107
+ # /.*\.example\.com/ # Allow requests from subdomains like `www.example.com`
108
+ # ]
109
+ # Skip DNS rebinding protection for the default health check endpoint.
110
+ # config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
107
111
  end
@@ -8,12 +8,13 @@ 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.
12
- config.cache_classes = true
11
+ # While tests run files are not watched, reloading is not necessary.
12
+ config.enable_reloading = false
13
13
 
14
- # Eager loading loads your whole application. When running a single test locally,
15
- # this probably isn't necessary. It's a good idea to do in a continuous integration
16
- # system, or in some way before deploying your code.
14
+ # Eager loading loads your entire application. When running a single test locally,
15
+ # this is usually not necessary, and can slow down your test suite. However, it's
16
+ # recommended that you enable it in continuous integration systems to ensure eager
17
+ # loading is working properly before deploying your code.
17
18
  config.eager_load = ENV["CI"].present?
18
19
 
19
20
  # Configure public file server for tests with Cache-Control for performance.
@@ -28,7 +29,7 @@ Rails.application.configure do
28
29
  config.cache_store = :null_store
29
30
 
30
31
  # Raise exceptions instead of rendering exception templates.
31
- config.action_dispatch.show_exceptions = false
32
+ config.action_dispatch.show_exceptions = :rescuable
32
33
 
33
34
  # Disable request forgery protection in test environment.
34
35
  config.action_controller.allow_forgery_protection = false
@@ -38,7 +39,7 @@ Rails.application.configure do
38
39
  config.active_storage.service = :test
39
40
 
40
41
  <%- end -%>
41
- <%- unless skip_action_mailer? -%>
42
+ <%- unless options.skip_action_mailer? -%>
42
43
  config.action_mailer.perform_caching = false
43
44
 
44
45
  # Tell Action Mailer not to deliver emails to the real world.
@@ -61,4 +62,7 @@ Rails.application.configure do
61
62
 
62
63
  # Annotate rendered view with file names.
63
64
  # config.action_view.annotate_rendered_view_with_filenames = true
65
+
66
+ # Raise error when a before_action's only/except options reference missing actions
67
+ config.action_controller.raise_on_missing_callback_actions = true
64
68
  end
@@ -5,8 +5,10 @@ Rails.application.config.assets.version = "1.0"
5
5
 
6
6
  # Add additional assets to the asset load path.
7
7
  # Rails.application.config.assets.paths << Emoji.images_path
8
+ <% if options[:asset_pipeline] == "sprockets" -%>
8
9
 
9
10
  # Precompile additional assets.
10
11
  # application.js, application.css, and all non-JS/CSS in the app/assets
11
12
  # folder are already added.
12
13
  # Rails.application.config.assets.precompile += %w( admin.js admin.css )
14
+ <% end -%>
@@ -16,9 +16,9 @@
16
16
  # # policy.report_uri "/csp-violation-report-endpoint"
17
17
  # end
18
18
  #
19
- # # Generate session nonces for permitted importmap and inline scripts
19
+ # # Generate session nonces for permitted importmap, inline scripts, and inline styles.
20
20
  # config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
21
- # config.content_security_policy_nonce_directives = %w(script-src)
21
+ # config.content_security_policy_nonce_directives = %w(script-src style-src)
22
22
  #
23
23
  # # Report violations without enforcing the policy.
24
24
  # # config.content_security_policy_report_only = true
@@ -1,7 +1,7 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
3
  # Avoid CORS issues when API is called from the frontend app.
4
- # Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.
4
+ # Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin Ajax requests.
5
5
 
6
6
  # Read more: https://github.com/cyu/rack-cors
7
7
 
@@ -0,0 +1,223 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file eases your Rails 7.1 framework defaults upgrade.
4
+ #
5
+ # Uncomment each configuration one by one to switch to the new default.
6
+ # Once your application is ready to run with all new defaults, you can remove
7
+ # this file and set the `config.load_defaults` to `7.1`.
8
+ #
9
+ # Read the Guide for Upgrading Ruby on Rails for more info on each option.
10
+ # https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
11
+
12
+ # No longer add autoloaded paths into `$LOAD_PATH`. This means that you won't be able
13
+ # to manually require files that are managed by the autoloader, which you shouldn't do anyway.
14
+ # This reduce the size of the load path, making `require` faster if you don't use bootsnap, or reduce the size
15
+ # of the bootsnap cache if you use it.
16
+ # Rails.application.config.add_autoload_paths_to_load_path = false
17
+
18
+ # Remove the default X-Download-Options headers since it is used only by Internet Explorer.
19
+ # If you need to support Internet Explorer, add back `"X-Download-Options" => "noopen"`.
20
+ # Rails.application.config.action_dispatch.default_headers = {
21
+ # "X-Frame-Options" => "SAMEORIGIN",
22
+ # "X-XSS-Protection" => "0",
23
+ # "X-Content-Type-Options" => "nosniff",
24
+ # "X-Permitted-Cross-Domain-Policies" => "none",
25
+ # "Referrer-Policy" => "strict-origin-when-cross-origin"
26
+ # }
27
+
28
+ # Do not treat an `ActionController::Parameters` instance
29
+ # as equal to an equivalent `Hash` by default.
30
+ # Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality = false
31
+
32
+ # Active Record Encryption now uses SHA-256 as its hash digest algorithm. Important: If you have
33
+ # data encrypted with previous Rails versions, there are two scenarios to consider:
34
+ #
35
+ # 1. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA1 (the default
36
+ # before Rails 7.0), you need to configure SHA-1 for Active Record Encryption too:
37
+ # Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA1
38
+ # 2. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA256 (the new default
39
+ # in 7.0), then you need to configure SHA-256 for Active Record Encryption:
40
+ # Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA256
41
+ #
42
+ # If you don't currently have data encrypted with Active Record encryption, you can disable this setting to
43
+ # configure the default behavior starting 7.1+:
44
+ # Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = false
45
+
46
+ # No longer run after_commit callbacks on the first of multiple Active Record
47
+ # instances to save changes to the same database row within a transaction.
48
+ # Instead, run these callbacks on the instance most likely to have internal
49
+ # state which matches what was committed to the database, typically the last
50
+ # instance to save.
51
+ # Rails.application.config.active_record.run_commit_callbacks_on_first_saved_instances_in_transaction = false
52
+
53
+ # Configures SQLite with a strict strings mode, which disables double-quoted string literals.
54
+ #
55
+ # SQLite has some quirks around double-quoted string literals.
56
+ # It first tries to consider double-quoted strings as identifier names, but if they don't exist
57
+ # it then considers them as string literals. Because of this, typos can silently go unnoticed.
58
+ # For example, it is possible to create an index for a non existing column.
59
+ # See https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted for more details.
60
+ # Rails.application.config.active_record.sqlite3_adapter_strict_strings_by_default = true
61
+
62
+ # Disable deprecated singular associations names
63
+ # Rails.application.config.active_record.allow_deprecated_singular_associations_name = false
64
+
65
+ # Enable the Active Job `BigDecimal` argument serializer, which guarantees
66
+ # roundtripping. Without this serializer, some queue adapters may serialize
67
+ # `BigDecimal` arguments as simple (non-roundtrippable) strings.
68
+ #
69
+ # When deploying an application with multiple replicas, old (pre-Rails 7.1)
70
+ # replicas will not be able to deserialize `BigDecimal` arguments from this
71
+ # serializer. Therefore, this setting should only be enabled after all replicas
72
+ # have been successfully upgraded to Rails 7.1.
73
+ # Rails.application.config.active_job.use_big_decimal_serializer = true
74
+
75
+ # Specify if an `ArgumentError` should be raised if `Rails.cache` `fetch` or
76
+ # `write` are given an invalid `expires_at` or `expires_in` time.
77
+ # Options are `true`, and `false`. If `false`, the exception will be reported
78
+ # as `handled` and logged instead.
79
+ # Rails.application.config.active_support.raise_on_invalid_cache_expiration_time = true
80
+
81
+ # Specify whether Query Logs will format tags using the SQLCommenter format
82
+ # (https://open-telemetry.github.io/opentelemetry-sqlcommenter/), or using the legacy format.
83
+ # Options are `:legacy` and `:sqlcommenter`.
84
+ # Rails.application.config.active_record.query_log_tags_format = :sqlcommenter
85
+
86
+ # Specify the default serializer used by `MessageEncryptor` and `MessageVerifier`
87
+ # instances.
88
+ #
89
+ # The legacy default is `:marshal`, which is a potential vector for
90
+ # deserialization attacks in cases where a message signing secret has been
91
+ # leaked.
92
+ #
93
+ # In Rails 7.1, the new default is `:json_allow_marshal` which serializes and
94
+ # deserializes with `ActiveSupport::JSON`, but can fall back to deserializing
95
+ # with `Marshal` so that legacy messages can still be read.
96
+ #
97
+ # In Rails 7.2, the default will become `:json` which serializes and
98
+ # deserializes with `ActiveSupport::JSON` only.
99
+ #
100
+ # Alternatively, you can choose `:message_pack` or `:message_pack_allow_marshal`,
101
+ # which serialize with `ActiveSupport::MessagePack`. `ActiveSupport::MessagePack`
102
+ # can roundtrip some Ruby types that are not supported by JSON, and may provide
103
+ # improved performance, but it requires the `msgpack` gem.
104
+ #
105
+ # For more information, see
106
+ # https://guides.rubyonrails.org/v7.1/configuring.html#config-active-support-message-serializer
107
+ #
108
+ # If you are performing a rolling deploy of a Rails 7.1 upgrade, wherein servers
109
+ # that have not yet been upgraded must be able to read messages from upgraded
110
+ # servers, first deploy without changing the serializer, then set the serializer
111
+ # in a subsequent deploy.
112
+ # Rails.application.config.active_support.message_serializer = :json_allow_marshal
113
+
114
+ # Enable a performance optimization that serializes message data and metadata
115
+ # together. This changes the message format, so messages serialized this way
116
+ # cannot be read by older versions of Rails. However, messages that use the old
117
+ # format can still be read, regardless of whether this optimization is enabled.
118
+ #
119
+ # To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
120
+ # not yet been upgraded must be able to read messages from upgraded servers,
121
+ # leave this optimization off on the first deploy, then enable it on a
122
+ # subsequent deploy.
123
+ # Rails.application.config.active_support.use_message_serializer_for_metadata = true
124
+
125
+ # Set the maximum size for Rails log files.
126
+ #
127
+ # `config.load_defaults 7.1` does not set this value for environments other than
128
+ # development and test.
129
+ #
130
+ # if Rails.env.local?
131
+ # Rails.application.config.log_file_size = 100 * 1024 * 1024
132
+ # end
133
+
134
+ # Enable raising on assignment to attr_readonly attributes. The previous
135
+ # behavior would allow assignment but silently not persist changes to the
136
+ # database.
137
+ # Rails.application.config.active_record.raise_on_assign_to_attr_readonly = true
138
+
139
+ # Enable validating only parent-related columns for presence when the parent is mandatory.
140
+ # The previous behavior was to validate the presence of the parent record, which performed an extra query
141
+ # to get the parent every time the child record was updated, even when parent has not changed.
142
+ # Rails.application.config.active_record.belongs_to_required_validates_foreign_key = false
143
+
144
+ # Enable precompilation of `config.filter_parameters`. Precompilation can
145
+ # improve filtering performance, depending on the quantity and types of filters.
146
+ # Rails.application.config.precompile_filter_parameters = true
147
+
148
+ # Enable before_committed! callbacks on all enrolled records in a transaction.
149
+ # The previous behavior was to only run the callbacks on the first copy of a record
150
+ # if there were multiple copies of the same record enrolled in the transaction.
151
+ # Rails.application.config.active_record.before_committed_on_all_records = true
152
+
153
+ # Disable automatic column serialization into YAML.
154
+ # To keep the historic behavior, you can set it to `YAML`, however it is
155
+ # recommended to explicitly define the serialization method for each column
156
+ # rather than to rely on a global default.
157
+ # Rails.application.config.active_record.default_column_serializer = nil
158
+
159
+ # Enable a performance optimization that serializes Active Record models
160
+ # in a faster and more compact way.
161
+ #
162
+ # To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
163
+ # not yet been upgraded must be able to read caches from upgraded servers,
164
+ # leave this optimization off on the first deploy, then enable it on a
165
+ # subsequent deploy.
166
+ # Rails.application.config.active_record.marshalling_format_version = 7.1
167
+
168
+ # Run `after_commit` and `after_*_commit` callbacks in the order they are defined in a model.
169
+ # This matches the behaviour of all other callbacks.
170
+ # In previous versions of Rails, they ran in the inverse order.
171
+ # Rails.application.config.active_record.run_after_transaction_callbacks_in_order_defined = true
172
+
173
+ # Whether a `transaction` block is committed or rolled back when exited via `return`, `break` or `throw`.
174
+ #
175
+ # Rails.application.config.active_record.commit_transaction_on_non_local_return = true
176
+
177
+ # Controls when to generate a value for <tt>has_secure_token</tt> declarations.
178
+ #
179
+ # Rails.application.config.active_record.generate_secure_token_on = :initialize
180
+
181
+ # ** Please read carefully, this must be configured in config/application.rb **
182
+ # Change the format of the cache entry.
183
+ # Changing this default means that all new cache entries added to the cache
184
+ # will have a different format that is not supported by Rails 7.0
185
+ # applications.
186
+ # Only change this value after your application is fully deployed to Rails 7.1
187
+ # and you have no plans to rollback.
188
+ # When you're ready to change format, add this to `config/application.rb` (NOT
189
+ # this file):
190
+ # config.active_support.cache_format_version = 7.1
191
+
192
+ # Configure Action View to use HTML5 standards-compliant sanitizers when they are supported on your
193
+ # platform.
194
+ #
195
+ # `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action View to use HTML5-compliant
196
+ # sanitizers if they are supported, else fall back to HTML4 sanitizers.
197
+ #
198
+ # In previous versions of Rails, Action View always used `Rails::HTML4::Sanitizer` as its vendor.
199
+ #
200
+ # Rails.application.config.action_view.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
201
+
202
+ # Configure Action Text to use an HTML5 standards-compliant sanitizer when it is supported on your
203
+ # platform.
204
+ #
205
+ # `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action Text to use HTML5-compliant
206
+ # sanitizers if they are supported, else fall back to HTML4 sanitizers.
207
+ #
208
+ # In previous versions of Rails, Action Text always used `Rails::HTML4::Sanitizer` as its vendor.
209
+ #
210
+ # Rails.application.config.action_text.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
211
+
212
+ # Configure the log level used by the DebugExceptions middleware when logging
213
+ # uncaught exceptions during requests
214
+ # Rails.application.config.action_dispatch.debug_exception_log_level = :error
215
+
216
+ # Configure the test helpers in Action View, Action Dispatch, and rails-dom-testing to use HTML5
217
+ # parsers.
218
+ #
219
+ # Nokogiri::HTML5 isn't supported on JRuby, so JRuby applications must set this to :html4.
220
+ #
221
+ # In previous versions of Rails, these test helpers always used an HTML4 parser.
222
+ #
223
+ # Rails.application.config.dom_testing_default_html_version = :html5
@@ -1,11 +1,13 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
1
3
  # Define an application-wide HTTP permissions policy. For further
2
- # information see https://developers.google.com/web/updates/2018/06/feature-policy
3
- #
4
- # Rails.application.config.permissions_policy do |f|
5
- # f.camera :none
6
- # f.gyroscope :none
7
- # f.microphone :none
8
- # f.usb :none
9
- # f.fullscreen :self
10
- # f.payment :self, "https://secure.example.com"
4
+ # information see: https://developers.google.com/web/updates/2018/06/feature-policy
5
+
6
+ # Rails.application.config.permissions_policy do |policy|
7
+ # policy.camera :none
8
+ # policy.gyroscope :none
9
+ # policy.microphone :none
10
+ # policy.usb :none
11
+ # policy.fullscreen :self
12
+ # policy.payment :self, "https://secure.example.com"
11
13
  # end
@@ -1,6 +1,6 @@
1
- # Files in the config/locales directory are used for internationalization
2
- # and are automatically loaded by Rails. If you want to use locales other
3
- # than English, add the necessary files in this directory.
1
+ # Files in the config/locales directory are used for internationalization and
2
+ # are automatically loaded by Rails. If you want to use locales other than
3
+ # English, add the necessary files in this directory.
4
4
  #
5
5
  # To use the locales, use `I18n.t`:
6
6
  #
@@ -16,18 +16,16 @@
16
16
  #
17
17
  # This would use the information in config/locales/es.yml.
18
18
  #
19
- # The following keys must be escaped otherwise they will not be retrieved by
20
- # the default I18n backend:
19
+ # To learn more about the API, please read the Rails Internationalization guide
20
+ # at https://guides.rubyonrails.org/i18n.html.
21
21
  #
22
- # true, false, on, off, yes, no
22
+ # Be aware that YAML interprets the following case-insensitive strings as
23
+ # booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings
24
+ # must be quoted to be interpreted as strings. For example:
23
25
  #
24
- # Instead, surround them with single quotes.
25
- #
26
- # en:
27
- # "true": "foo"
28
- #
29
- # To learn more, please read the Rails Internationalization guide
30
- # available at https://guides.rubyonrails.org/i18n.html.
26
+ # en:
27
+ # "yes": yup
28
+ # enabled: "ON"
31
29
 
32
30
  en:
33
31
  hello: "Hello world"