railties 6.1.7.9 → 7.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +89 -468
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.rdoc +16 -16
  5. data/README.rdoc +0 -1
  6. data/lib/rails/app_updater.rb +2 -4
  7. data/lib/rails/application/bootstrap.rb +17 -5
  8. data/lib/rails/application/configuration.rb +52 -31
  9. data/lib/rails/application/default_middleware_stack.rb +6 -3
  10. data/lib/rails/application/finisher.rb +43 -85
  11. data/lib/rails/application/routes_reloader.rb +8 -0
  12. data/lib/rails/application.rb +24 -50
  13. data/lib/rails/application_controller.rb +2 -2
  14. data/lib/rails/autoloaders/inflector.rb +21 -0
  15. data/lib/rails/autoloaders.rb +12 -16
  16. data/lib/rails/code_statistics.rb +2 -2
  17. data/lib/rails/code_statistics_calculator.rb +10 -1
  18. data/lib/rails/command/base.rb +26 -12
  19. data/lib/rails/command/behavior.rb +1 -1
  20. data/lib/rails/command/environment_argument.rb +1 -1
  21. data/lib/rails/command.rb +8 -5
  22. data/lib/rails/commands/credentials/USAGE +4 -2
  23. data/lib/rails/commands/credentials/credentials_command/diffing.rb +26 -16
  24. data/lib/rails/commands/credentials/credentials_command.rb +6 -2
  25. data/lib/rails/commands/dbconsole/dbconsole_command.rb +16 -15
  26. data/lib/rails/commands/help/USAGE +3 -2
  27. data/lib/rails/commands/runner/runner_command.rb +3 -2
  28. data/lib/rails/commands/server/server_command.rb +2 -5
  29. data/lib/rails/configuration.rb +18 -23
  30. data/lib/rails/engine/configuration.rb +2 -2
  31. data/lib/rails/engine.rb +23 -27
  32. data/lib/rails/gem_version.rb +4 -4
  33. data/lib/rails/generators/actions/create_migration.rb +2 -4
  34. data/lib/rails/generators/actions.rb +35 -13
  35. data/lib/rails/generators/app_base.rb +66 -102
  36. data/lib/rails/generators/app_name.rb +1 -1
  37. data/lib/rails/generators/base.rb +9 -13
  38. data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +2 -0
  39. data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +8 -4
  40. data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +5 -27
  41. data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +7 -3
  42. data/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +20 -0
  43. data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +7 -16
  44. data/lib/rails/generators/erb.rb +1 -1
  45. data/lib/rails/generators/generated_attribute.rb +40 -4
  46. data/lib/rails/generators/migration.rb +2 -6
  47. data/lib/rails/generators/model_helpers.rb +1 -1
  48. data/lib/rails/generators/named_base.rb +1 -1
  49. data/lib/rails/generators/rails/app/app_generator.rb +44 -88
  50. data/lib/rails/generators/rails/app/templates/Gemfile.tt +41 -52
  51. data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css.tt +2 -2
  52. data/lib/rails/generators/rails/app/templates/app/mailers/application_mailer.rb.tt +2 -2
  53. data/lib/rails/generators/rails/app/templates/app/models/application_record.rb.tt +1 -1
  54. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +3 -10
  55. data/lib/rails/generators/rails/app/templates/bin/rails.tt +1 -4
  56. data/lib/rails/generators/rails/app/templates/bin/rake.tt +0 -3
  57. data/lib/rails/generators/rails/app/templates/bin/setup.tt +9 -14
  58. data/lib/rails/generators/rails/app/templates/config/boot.rb.tt +1 -1
  59. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +2 -2
  60. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +3 -3
  61. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +3 -3
  62. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +2 -2
  63. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +3 -3
  64. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +2 -2
  65. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +3 -3
  66. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +1 -1
  67. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +5 -5
  68. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +2 -11
  69. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +9 -15
  70. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +2 -7
  71. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +1 -5
  72. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +0 -5
  73. data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +2 -2
  74. data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb.tt +4 -4
  75. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +85 -0
  76. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +3 -3
  77. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +1 -1
  78. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +3 -0
  79. data/lib/rails/generators/rails/app/templates/config/storage.yml.tt +5 -5
  80. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +2 -2
  81. data/lib/rails/generators/rails/app/templates/gitattributes.tt +0 -5
  82. data/lib/rails/generators/rails/app/templates/gitignore.tt +0 -1
  83. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +1 -1
  84. data/lib/rails/generators/rails/controller/controller_generator.rb +1 -2
  85. data/lib/rails/generators/rails/controller/templates/controller.rb.tt +0 -4
  86. data/lib/rails/generators/rails/db/system/change/change_generator.rb +1 -1
  87. data/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt +1 -1
  88. data/lib/rails/generators/rails/plugin/plugin_generator.rb +40 -15
  89. data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +4 -2
  90. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +9 -9
  91. data/lib/rails/generators/rails/plugin/templates/README.md.tt +1 -1
  92. data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +2 -2
  93. data/lib/rails/generators/rails/plugin/templates/app/models/%namespaced_name%/application_record.rb.tt +1 -1
  94. data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +0 -3
  95. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +4 -4
  96. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -5
  97. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +2 -2
  98. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/version.rb.tt +1 -1
  99. data/lib/rails/generators/rails/plugin/templates/rails/boot.rb.tt +2 -2
  100. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +3 -3
  101. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +0 -19
  102. data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -5
  103. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +6 -10
  104. data/lib/rails/generators/resource_helpers.rb +2 -2
  105. data/lib/rails/generators/test_unit/generator/templates/generator_test.rb.tt +1 -1
  106. data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +2 -2
  107. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +3 -3
  108. data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +5 -5
  109. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +2 -2
  110. data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +3 -3
  111. data/lib/rails/generators/testing/behaviour.rb +1 -2
  112. data/lib/rails/generators.rb +9 -22
  113. data/lib/rails/info.rb +1 -1
  114. data/lib/rails/info_controller.rb +1 -3
  115. data/lib/rails/initializable.rb +1 -1
  116. data/lib/rails/mailers_controller.rb +2 -4
  117. data/lib/rails/rack/logger.rb +0 -1
  118. data/lib/rails/railtie/configuration.rb +1 -2
  119. data/lib/rails/railtie.rb +9 -9
  120. data/lib/rails/ruby_version_check.rb +3 -3
  121. data/lib/rails/secrets.rb +8 -10
  122. data/lib/rails/tasks/framework.rake +2 -8
  123. data/lib/rails/tasks/statistics.rake +3 -1
  124. data/lib/rails/tasks/tmp.rake +8 -1
  125. data/lib/rails/tasks/yarn.rake +5 -1
  126. data/lib/rails/tasks/zeitwerk.rake +2 -10
  127. data/lib/rails/templates/layouts/application.html.erb +15 -0
  128. data/lib/rails/templates/rails/mailers/email.html.erb +12 -10
  129. data/lib/rails/templates/rails/welcome/index.html.erb +3 -0
  130. data/lib/rails/test_unit/railtie.rb +0 -4
  131. data/lib/rails/test_unit/runner.rb +7 -5
  132. data/lib/rails/test_unit/testing.rake +4 -9
  133. data/lib/rails.rb +1 -0
  134. metadata +34 -36
  135. data/lib/rails/command/spellchecker.rb +0 -57
  136. data/lib/rails/generators/css/assets/assets_generator.rb +0 -15
  137. data/lib/rails/generators/css/assets/templates/stylesheet.css +0 -4
  138. data/lib/rails/generators/css/scaffold/scaffold_generator.rb +0 -18
  139. data/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +0 -6
  140. data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +0 -5
  141. data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +0 -23
  142. data/lib/rails/generators/rails/app/templates/bin/spring.tt +0 -13
  143. data/lib/rails/generators/rails/app/templates/bin/yarn.tt +0 -16
  144. data/lib/rails/generators/rails/app/templates/config/initializers/application_controller_renderer.rb.tt +0 -8
  145. data/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb.tt +0 -5
  146. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_1.rb.tt +0 -67
  147. data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +0 -6
  148. data/lib/rails/generators/rails/app/templates/package.json.tt +0 -11
  149. data/lib/rails/generators/rails/assets/USAGE +0 -16
  150. data/lib/rails/generators/rails/assets/assets_generator.rb +0 -26
  151. data/lib/rails/generators/rails/assets/templates/stylesheet.css +0 -4
  152. data/lib/rails/generators/rails/scaffold/templates/scaffold.css +0 -80
@@ -2,7 +2,7 @@
2
2
  # gem install sqlite3
3
3
  #
4
4
  # Ensure the SQLite 3 gem is defined in your Gemfile
5
- # gem 'sqlite3'
5
+ # gem "sqlite3"
6
6
  #
7
7
  default: &default
8
8
  adapter: sqlite3
@@ -5,14 +5,14 @@
5
5
  # gem install activerecord-sqlserver-adapter
6
6
  #
7
7
  # Ensure the activerecord adapter and db driver gems are defined in your Gemfile
8
- # gem 'tiny_tds'
9
- # gem 'activerecord-sqlserver-adapter'
8
+ # gem "tiny_tds"
9
+ # gem "activerecord-sqlserver-adapter"
10
10
  #
11
11
  default: &default
12
12
  adapter: sqlserver
13
13
  encoding: utf8
14
14
  username: sa
15
- password: <%%= ENV['SA_PASSWORD'] %>
15
+ password: <%%= ENV["SA_PASSWORD"] %>
16
16
  host: localhost
17
17
 
18
18
  development:
@@ -41,7 +41,7 @@ test:
41
41
  # URL environment variable explicitly:
42
42
  #
43
43
  # production:
44
- # url: <%%= ENV['MY_APP_DATABASE_URL'] %>
44
+ # url: <%%= ENV["MY_APP_DATABASE_URL"] %>
45
45
  #
46
46
  # Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
47
47
  # for a full overview on how database connection configuration can be specified.
@@ -50,4 +50,4 @@ production:
50
50
  <<: *default
51
51
  database: <%= app_name %>_production
52
52
  username: <%= app_name %>
53
- password: <%%= ENV['<%= app_name.upcase %>_DATABASE_PASSWORD'] %>
53
+ password: <%%= ENV["<%= app_name.upcase %>_DATABASE_PASSWORD"] %>
@@ -16,7 +16,7 @@ Rails.application.configure do
16
16
 
17
17
  # Enable/disable caching. By default caching is disabled.
18
18
  # Run rails dev:cache to toggle caching.
19
- if Rails.root.join('tmp', 'caching-dev.txt').exist?
19
+ if Rails.root.join("tmp/caching-dev.txt").exist?
20
20
  <%- unless options.api? -%>
21
21
  config.action_controller.perform_caching = true
22
22
  config.action_controller.enable_fragment_cache_logging = true
@@ -24,7 +24,7 @@ Rails.application.configure do
24
24
  <%- end -%>
25
25
  config.cache_store = :memory_store
26
26
  config.public_file_server.headers = {
27
- 'Cache-Control' => "public, max-age=#{2.days.to_i}"
27
+ "Cache-Control" => "public, max-age=#{2.days.to_i}"
28
28
  }
29
29
  else
30
30
  config.action_controller.perform_caching = false
@@ -62,11 +62,6 @@ Rails.application.configure do
62
62
 
63
63
  <%- end -%>
64
64
  <%- unless options.skip_sprockets? -%>
65
- # Debug mode disables concatenation and preprocessing of assets.
66
- # This option may cause significant delays in view rendering with a large
67
- # number of complex assets.
68
- config.assets.debug = true
69
-
70
65
  # Suppress logger output for asset requests.
71
66
  config.assets.quiet = true
72
67
  <%- end -%>
@@ -77,10 +72,6 @@ Rails.application.configure do
77
72
  # Annotate rendered view with file names.
78
73
  # config.action_view.annotate_rendered_view_with_filenames = true
79
74
 
80
- # Use an evented file watcher to asynchronously detect changes in source code,
81
- # routes, locales, etc. This feature depends on the listen gem.
82
- <%= '# ' unless depend_on_listen? %>config.file_watcher = ActiveSupport::EventedFileUpdateChecker
83
-
84
75
  # Uncomment if you wish to allow Action Cable access from any origin.
85
76
  # config.action_cable.disable_request_forgery_protection = true
86
77
  end
@@ -24,7 +24,7 @@ Rails.application.configure do
24
24
 
25
25
  # Disable serving static files from the `/public` folder by default since
26
26
  # Apache or NGINX already handles this.
27
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
27
+ config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
28
28
 
29
29
  <%- unless options.skip_sprockets? -%>
30
30
  # Compress CSS using a preprocessor.
@@ -35,11 +35,11 @@ Rails.application.configure do
35
35
 
36
36
  <%- end -%>
37
37
  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
38
- # config.asset_host = 'http://assets.example.com'
38
+ # config.asset_host = "http://assets.example.com"
39
39
 
40
40
  # Specifies the header that your server uses for sending files.
41
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
42
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
41
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
42
+ # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
43
43
 
44
44
  <%- unless skip_active_storage? -%>
45
45
  # Store uploaded files on the local file system (see config/storage.yml for options).
@@ -49,8 +49,8 @@ Rails.application.configure do
49
49
  <%- unless options[:skip_action_cable] -%>
50
50
  # Mount Action Cable outside main process or domain.
51
51
  # config.action_cable.mount_path = nil
52
- # config.action_cable.url = 'wss://example.com/cable'
53
- # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
52
+ # config.action_cable.url = "wss://example.com/cable"
53
+ # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
54
54
 
55
55
  <%- end -%>
56
56
  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
@@ -84,21 +84,15 @@ Rails.application.configure do
84
84
  # the I18n.default_locale when a translation cannot be found).
85
85
  config.i18n.fallbacks = true
86
86
 
87
- # Send deprecation notices to registered listeners.
88
- config.active_support.deprecation = :notify
89
-
90
- # Log disallowed deprecations.
91
- config.active_support.disallowed_deprecation = :log
92
-
93
- # Tell Active Support which deprecation messages to disallow.
94
- config.active_support.disallowed_deprecation_warnings = []
87
+ # Don't log any deprecations.
88
+ config.active_support.report_deprecations = false
95
89
 
96
90
  # Use default logging formatter so that PID and timestamp are not suppressed.
97
91
  config.log_formatter = ::Logger::Formatter.new
98
92
 
99
93
  # Use a different logger for distributed setups.
100
94
  # require "syslog/logger"
101
- # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
95
+ # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
102
96
 
103
97
  if ENV["RAILS_LOG_TO_STDOUT"].present?
104
98
  logger = ActiveSupport::Logger.new(STDOUT)
@@ -8,13 +8,8 @@ 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
- <%-# Spring executes the reloaders when files change. -%>
12
- <%- if spring_install? -%>
13
- config.cache_classes = false
14
- config.action_view.cache_template_loading = true
15
- <%- else -%>
11
+ # Turn false under Spring and add config.action_view.cache_template_loading = true
16
12
  config.cache_classes = true
17
- <%- end -%>
18
13
 
19
14
  # Do not eager load code on boot. This avoids loading your whole application
20
15
  # just for the purpose of running a single test. If you are using a tool that
@@ -24,7 +19,7 @@ Rails.application.configure do
24
19
  # Configure public file server for tests with Cache-Control for performance.
25
20
  config.public_file_server.enabled = true
26
21
  config.public_file_server.headers = {
27
- 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
22
+ "Cache-Control" => "public, max-age=#{1.hour.to_i}"
28
23
  }
29
24
 
30
25
  # Show full error reports and disable caching.
@@ -1,14 +1,10 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
3
  # Version of your assets, change this if you want to expire all your assets.
4
- Rails.application.config.assets.version = '1.0'
4
+ 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
- <%- unless options[:skip_javascript] -%>
9
- # Add Yarn node_modules folder to the asset load path.
10
- Rails.application.config.assets.paths << Rails.root.join('node_modules')
11
- <%- end -%>
12
8
 
13
9
  # Precompile additional assets.
14
10
  # application.js, application.css, and all non-JS/CSS in the app/assets
@@ -11,11 +11,6 @@
11
11
  # policy.object_src :none
12
12
  # policy.script_src :self, :https
13
13
  # policy.style_src :self, :https
14
- <%- unless options[:skip_javascript] -%>
15
- # # If you are using webpack-dev-server then specify webpack-dev-server host
16
- # policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
17
- <%- end -%>
18
-
19
14
  # # Specify URI for violation reports
20
15
  # # policy.report_uri "/csp-violation-report-endpoint"
21
16
  # end
@@ -7,9 +7,9 @@
7
7
 
8
8
  # Rails.application.config.middleware.insert_before 0, Rack::Cors do
9
9
  # allow do
10
- # origins 'example.com'
10
+ # origins "example.com"
11
11
  #
12
- # resource '*',
12
+ # resource "*",
13
13
  # headers: :any,
14
14
  # methods: [:get, :post, :put, :patch, :delete, :options, :head]
15
15
  # end
@@ -4,13 +4,13 @@
4
4
  # are locale specific, and you may define rules for as many different
5
5
  # locales as you wish. All of these examples are active by default:
6
6
  # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
- # inflect.plural /^(ox)$/i, '\1en'
8
- # inflect.singular /^(ox)en/i, '\1'
9
- # inflect.irregular 'person', 'people'
7
+ # inflect.plural /^(ox)$/i, "\\1en"
8
+ # inflect.singular /^(ox)en/i, "\\1"
9
+ # inflect.irregular "person", "people"
10
10
  # inflect.uncountable %w( fish sheep )
11
11
  # end
12
12
 
13
13
  # These inflection rules are supported but not enabled by default:
14
14
  # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
- # inflect.acronym 'RESTful'
15
+ # inflect.acronym "RESTful"
16
16
  # end
@@ -0,0 +1,85 @@
1
+ # Be sure to restart your server when you modify this file.
2
+ #
3
+ # This file eases your Rails 7.0 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.0`.
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
+ # Raise an error when trying to use forgery protection without a working
13
+ # session.
14
+ # Rails.application.config.action_controller.silence_disabled_session_errors = false
15
+
16
+ # `button_to` view helper will render `<button>` element, regardless of whether
17
+ # or not the content is passed as the first argument or as a block.
18
+ # Rails.application.config.action_view.button_to_generates_button_tag = true
19
+
20
+ # `stylesheet_link_tag` view helper will not render the media attribute by default.
21
+ # Rails.application.config.action_view.apply_stylesheet_media_default = false
22
+
23
+ # Change the digest class for the key generators to `OpenSSL::Digest::SHA256`.
24
+ # Changing this default means invalidate all encrypted messages generated by
25
+ # your application and, all the encrypted cookies. Only change this after you
26
+ # rotated all the messages using the key rotator.
27
+ #
28
+ # See upgrading guide for more information on how to build a rotator.
29
+ # https://guides.rubyonrails.org/v7.0/upgrading_ruby_on_rails.html
30
+ # Rails.application.config.active_support.key_generator_hash_digest_class = OpenSSL::Digest::SHA256
31
+
32
+ # Change the digest class for ActiveSupport::Digest.
33
+ # Changing this default means that for example Etags change and
34
+ # various cache keys leading to cache invalidation.
35
+ # Rails.application.config.active_support.hash_digest_class = OpenSSL::Digest::SHA256
36
+
37
+ # Don't override ActiveSupport::TimeWithZone.name and use the default Ruby
38
+ # implementation.
39
+ # Rails.application.config.active_support.remove_deprecated_time_with_zone_name = true
40
+
41
+ # Change the format of the cache entry.
42
+ # Changing this default means that all new cache entries added to the cache
43
+ # will have a different format that is not supported by Rails 6.1 applications.
44
+ # Only change this value after your application is fully deployed to Rails 7.0
45
+ # and you have no plans to rollback.
46
+ # Rails.application.config.active_support.cache_format_version = 7.0
47
+
48
+ # Set both the `:open_timeout` and `:read_timeout` values for `:smtp` delivery method.
49
+ # Rails.application.config.action_mailer.smtp_timeout = 5
50
+
51
+ # The ActiveStorage video previewer will now use scene change detection to generate
52
+ # better preview images (rather than the previous default of using the first frame
53
+ # of the video).
54
+ # Rails.application.config.active_storage.video_preview_arguments =
55
+ # "-vf 'select=eq(n\\,0)+eq(key\\,1)+gt(scene\\,0.015),loop=loop=-1:size=2,trim=start_frame=1' -frames:v 1 -f image2"
56
+
57
+ # Raise when running tests if fixtures contained foreign key violations
58
+ # Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true
59
+
60
+ # Disable partial inserts.
61
+ # This default means that all columns will be referenced in INSERT queries
62
+ # regardless of whether they have a default or not.
63
+ # Rails.application.config.active_record.partial_inserts = false
64
+ #
65
+ # Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`.
66
+ # Rails.application.config.action_controller.raise_on_open_redirects = true
67
+
68
+ # Change the variant processor for Active Storage.
69
+ # Changing this default means updating all places in your code that
70
+ # generate variants to use image processing macros and ruby-vips
71
+ # operations. See the upgrading guide for detail on the changes required.
72
+ # The `:mini_magick` option is not deprecated; it's fine to keep using it.
73
+ # Rails.application.config.active_storage.variant_processor = :vips
74
+
75
+ # If you're upgrading and haven't set `cookies_serializer` previously, your cookie serializer
76
+ # was `:marshal`. Convert all cookies to JSON, using the `:hybrid` formatter.
77
+ #
78
+ # If you're confident all your cookies are JSON formatted, you can switch to the `:json` formatter.
79
+ #
80
+ # Continue to use `:marshal` for backward-compatibility with old cookies.
81
+ #
82
+ # If you have configured the serializer elsewhere, you can remove this.
83
+ #
84
+ # See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information.
85
+ # Rails.application.config.action_dispatch.cookies_serializer = :hybrid
@@ -4,11 +4,11 @@
4
4
  #
5
5
  # To use the locales, use `I18n.t`:
6
6
  #
7
- # I18n.t 'hello'
7
+ # I18n.t "hello"
8
8
  #
9
9
  # In views, this is aliased to just `t`:
10
10
  #
11
- # <%= t('hello') %>
11
+ # <%= t("hello") %>
12
12
  #
13
13
  # To use a different locale, set it with `I18n.locale`:
14
14
  #
@@ -24,7 +24,7 @@
24
24
  # Instead, surround them with single quotes.
25
25
  #
26
26
  # en:
27
- # 'true': 'foo'
27
+ # "true": "foo"
28
28
  #
29
29
  # To learn more, please read the Rails Internationalization guide
30
30
  # available at https://guides.rubyonrails.org/i18n.html.
@@ -39,5 +39,5 @@ pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
39
39
  #
40
40
  # preload_app!
41
41
 
42
- # Allow puma to be restarted by `rails restart` command.
42
+ # Allow puma to be restarted by `bin/rails restart` command.
43
43
  plugin :tmp_restart
@@ -1,3 +1,6 @@
1
1
  Rails.application.routes.draw do
2
2
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
3
+
4
+ # Almost every application defines a route for the root path ("/") at the top of this file.
5
+ # root "articles#index"
3
6
  end
@@ -6,27 +6,27 @@ local:
6
6
  service: Disk
7
7
  root: <%%= Rails.root.join("storage") %>
8
8
 
9
- # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
9
+ # Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
10
10
  # amazon:
11
11
  # service: S3
12
12
  # access_key_id: <%%= Rails.application.credentials.dig(:aws, :access_key_id) %>
13
13
  # secret_access_key: <%%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
14
14
  # region: us-east-1
15
- # bucket: your_own_bucket
15
+ # bucket: your_own_bucket-<%%= Rails.env %>
16
16
 
17
17
  # Remember not to checkin your GCS keyfile to a repository
18
18
  # google:
19
19
  # service: GCS
20
20
  # project: your_project
21
21
  # credentials: <%%= Rails.root.join("path/to/gcs.keyfile") %>
22
- # bucket: your_own_bucket
22
+ # bucket: your_own_bucket-<%%= Rails.env %>
23
23
 
24
- # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
24
+ # Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
25
25
  # microsoft:
26
26
  # service: AzureStorage
27
27
  # storage_account_name: your_account_name
28
28
  # storage_access_key: <%%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
29
- # container: your_container_name
29
+ # container: your_container_name-<%%= Rails.env %>
30
30
 
31
31
  # mirror:
32
32
  # service: Mirror
@@ -3,5 +3,5 @@
3
3
  #
4
4
  # Examples:
5
5
  #
6
- # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
7
- # Character.create(name: 'Luke', movie: movies.first)
6
+ # movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }])
7
+ # Character.create(name: "Luke", movie: movies.first)
@@ -5,10 +5,5 @@
5
5
  db/schema.rb linguist-generated
6
6
  <% end -%>
7
7
 
8
- <% unless options[:skip_javascript] -%>
9
- # Mark the yarn lockfile as having been generated.
10
- yarn.lock linguist-generated
11
- <% end -%>
12
-
13
8
  # Mark any vendored files as having been vendored.
14
9
  vendor/* linguist-vendored
@@ -37,4 +37,3 @@
37
37
 
38
38
  /public/assets
39
39
  <% end -%>
40
- .byebug_history
@@ -1,4 +1,4 @@
1
- ENV['RAILS_ENV'] ||= 'test'
1
+ ENV["RAILS_ENV"] ||= "test"
2
2
  require_relative "../config/environment"
3
3
  require "rails/test_help"
4
4
 
@@ -6,7 +6,6 @@ module Rails
6
6
  argument :actions, type: :array, default: [], banner: "action action"
7
7
  class_option :skip_routes, type: :boolean, desc: "Don't add routes to config/routes.rb."
8
8
  class_option :helper, type: :boolean
9
- class_option :assets, type: :boolean
10
9
 
11
10
  check_class_collision suffix: "Controller"
12
11
 
@@ -21,7 +20,7 @@ module Rails
21
20
  route routing_code, namespace: regular_class_path
22
21
  end
23
22
 
24
- hook_for :template_engine, :test_framework, :helper, :assets do |generator|
23
+ hook_for :template_engine, :test_framework, :helper do |generator|
25
24
  invoke generator, [ remove_possible_suffix(name), actions ]
26
25
  end
27
26
 
@@ -1,7 +1,3 @@
1
- <% if namespaced? -%>
2
- require_dependency "<%= namespaced_path %>/application_controller"
3
-
4
- <% end -%>
5
1
  <% module_namespacing do -%>
6
2
  class <%= class_name %>Controller < ApplicationController
7
3
  <% actions.each do |action| -%>
@@ -55,7 +55,7 @@ module Rails
55
55
  end
56
56
 
57
57
  def gem_entry_for(*gem_name_and_version)
58
- gem_name_and_version.map! { |segment| "'#{segment}'" }
58
+ gem_name_and_version.map! { |segment| "\"#{segment}\"" }
59
59
  "gem #{gem_name_and_version.join(", ")}"
60
60
  end
61
61
  end
@@ -1,3 +1,3 @@
1
1
  class <%= class_name %>Generator < Rails::Generators::NamedBase
2
- source_root File.expand_path('templates', __dir__)
2
+ source_root File.expand_path("templates", __dir__)
3
3
  end
@@ -26,11 +26,15 @@ module Rails
26
26
  empty_directory_with_keep_file "app/assets/images/#{namespaced_name}"
27
27
  end
28
28
 
29
+ empty_directory_with_keep_file "app/models/concerns"
30
+ empty_directory_with_keep_file "app/controllers/concerns"
29
31
  remove_dir "app/mailers" if options[:skip_action_mailer]
30
32
  remove_dir "app/jobs" if options[:skip_active_job]
31
33
  elsif full?
32
34
  empty_directory_with_keep_file "app/models"
33
35
  empty_directory_with_keep_file "app/controllers"
36
+ empty_directory_with_keep_file "app/models/concerns"
37
+ empty_directory_with_keep_file "app/controllers/concerns"
34
38
  empty_directory_with_keep_file "app/mailers" unless options[:skip_action_mailer]
35
39
  empty_directory_with_keep_file "app/jobs" unless options[:skip_active_job]
36
40
 
@@ -51,7 +55,7 @@ module Rails
51
55
  end
52
56
 
53
57
  def license
54
- template "MIT-LICENSE"
58
+ template "MIT-LICENSE" unless inside_application?
55
59
  end
56
60
 
57
61
  def gemspec
@@ -65,6 +69,9 @@ module Rails
65
69
  def version_control
66
70
  if !options[:skip_git] && !options[:pretend]
67
71
  run "git init", capture: options[:quiet], abort_on_failure: false
72
+ if user_default_branch.strip.empty?
73
+ `git symbolic-ref HEAD refs/heads/main`
74
+ end
68
75
  end
69
76
  end
70
77
 
@@ -87,12 +94,22 @@ module Rails
87
94
  def test
88
95
  template "test/test_helper.rb"
89
96
  template "test/%namespaced_name%_test.rb"
90
- append_file "Rakefile", <<-EOF
91
-
92
- #{rakefile_test_tasks}
93
- task default: :test
97
+ append_file "Rakefile", <<~EOF
98
+ #{rakefile_test_tasks}
99
+ task default: :test
94
100
  EOF
101
+
95
102
  if engine?
103
+ empty_directory_with_keep_file "test/fixtures/files"
104
+ empty_directory_with_keep_file "test/controllers"
105
+ empty_directory_with_keep_file "test/mailers"
106
+ empty_directory_with_keep_file "test/models"
107
+ empty_directory_with_keep_file "test/integration"
108
+
109
+ unless api?
110
+ empty_directory_with_keep_file "test/helpers"
111
+ end
112
+
96
113
  template "test/integration/navigation_test.rb"
97
114
  end
98
115
  end
@@ -103,11 +120,8 @@ task default: :test
103
120
  opts = options.transform_keys(&:to_sym).except(*DUMMY_IGNORE_OPTIONS)
104
121
  opts[:force] = force
105
122
  opts[:skip_bundle] = true
106
- opts[:skip_spring] = true
107
- opts[:skip_listen] = true
108
123
  opts[:skip_git] = true
109
- opts[:skip_turbolinks] = true
110
- opts[:skip_webpack_install] = true
124
+ opts[:skip_hotwire] = true
111
125
  opts[:dummy_app] = true
112
126
 
113
127
  invoke Rails::Generators::AppGenerator,
@@ -124,10 +138,16 @@ task default: :test
124
138
  if mountable?
125
139
  template "rails/routes.rb", "#{dummy_path}/config/routes.rb", force: true
126
140
  end
141
+ if engine? && !api?
142
+ insert_into_file "#{dummy_path}/config/application.rb", indent(<<~RUBY, 4), after: /^\s*config\.load_defaults.*\n/
143
+
144
+ # For compatibility with applications that use this config
145
+ config.action_controller.include_all_helpers = false
146
+ RUBY
147
+ end
127
148
  end
128
149
 
129
- def test_dummy_assets
130
- template "rails/javascripts.js", "#{dummy_path}/app/javascript/packs/application.js", force: true
150
+ def test_dummy_sprocket_assets
131
151
  template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true
132
152
  template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/config/manifest.js", force: true
133
153
  end
@@ -175,6 +195,11 @@ task default: :test
175
195
  append_file gemfile_in_app_path, entry
176
196
  end
177
197
  end
198
+
199
+ private
200
+ def user_default_branch
201
+ @user_default_branch ||= `git config init.defaultbranch`
202
+ end
178
203
  end
179
204
 
180
205
  module Generators
@@ -216,7 +241,7 @@ task default: :test
216
241
  build(:gemspec) unless options[:skip_gemspec]
217
242
  build(:license)
218
243
  build(:gitignore) unless options[:skip_git]
219
- build(:gemfile) unless options[:skip_gemfile]
244
+ build(:gemfile)
220
245
  build(:version_control)
221
246
  end
222
247
 
@@ -291,7 +316,7 @@ task default: :test
291
316
  mute do
292
317
  build(:generate_test_dummy)
293
318
  build(:test_dummy_config)
294
- build(:test_dummy_assets)
319
+ build(:test_dummy_sprocket_assets) unless options[:skip_sprockets]
295
320
  build(:test_dummy_clean)
296
321
  # ensure that bin/rails has proper dummy_path
297
322
  build(:bin, true)
@@ -398,8 +423,8 @@ task default: :test
398
423
  require "rake/testtask"
399
424
 
400
425
  Rake::TestTask.new(:test) do |t|
401
- t.libs << 'test'
402
- t.pattern = 'test/**/*_test.rb'
426
+ t.libs << "test"
427
+ t.pattern = "test/**/*_test.rb"
403
428
  t.verbose = false
404
429
  end
405
430
  RUBY
@@ -8,9 +8,11 @@ Gem::Specification.new do |spec|
8
8
  spec.homepage = "TODO"
9
9
  spec.summary = "TODO: Summary of <%= camelized_modules %>."
10
10
  spec.description = "TODO: Description of <%= camelized_modules %>."
11
+ <% unless inside_application? -%>
11
12
  spec.license = "MIT"
13
+ <% end -%>
12
14
 
13
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
15
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the "allowed_push_host"
14
16
  # to allow pushing to a single host or delete this section to allow pushing to any host.
15
17
  spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
16
18
 
@@ -20,5 +22,5 @@ Gem::Specification.new do |spec|
20
22
 
21
23
  spec.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]
22
24
 
23
- <%= '# ' if options.dev? || options.edge? || options.master? -%>spec.add_dependency "rails", "<%= Array(rails_version_specifier).join('", "') %>"
25
+ <%= "# " if options.dev? || options.edge? || options.main? -%>spec.add_dependency "rails", "<%= Array(rails_version_specifier).join('", "') %>"
24
26
  end