railties 6.0.3.1 → 6.1.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +229 -363
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.rdoc +1 -1
  5. data/lib/minitest/rails_plugin.rb +16 -1
  6. data/lib/rails.rb +5 -8
  7. data/lib/rails/application.rb +49 -83
  8. data/lib/rails/application/bootstrap.rb +5 -5
  9. data/lib/rails/application/configuration.rb +56 -21
  10. data/lib/rails/application/default_middleware_stack.rb +5 -3
  11. data/lib/rails/application/finisher.rb +15 -2
  12. data/lib/rails/application/routes_reloader.rb +9 -2
  13. data/lib/rails/backtrace_cleaner.rb +12 -7
  14. data/lib/rails/code_statistics.rb +3 -3
  15. data/lib/rails/code_statistics_calculator.rb +6 -6
  16. data/lib/rails/command.rb +7 -1
  17. data/lib/rails/command/base.rb +1 -1
  18. data/lib/rails/command/behavior.rb +1 -1
  19. data/lib/rails/command/environment_argument.rb +1 -1
  20. data/lib/rails/commands/credentials/USAGE +17 -2
  21. data/lib/rails/commands/credentials/credentials_command.rb +28 -4
  22. data/lib/rails/commands/credentials/credentials_command/diffing.rb +41 -0
  23. data/lib/rails/commands/db/system/change/change_command.rb +6 -1
  24. data/lib/rails/commands/dbconsole/dbconsole_command.rb +61 -58
  25. data/lib/rails/commands/encrypted/encrypted_command.rb +4 -4
  26. data/lib/rails/commands/generate/generate_command.rb +1 -1
  27. data/lib/rails/commands/notes/notes_command.rb +1 -11
  28. data/lib/rails/commands/rake/rake_command.rb +9 -8
  29. data/lib/rails/commands/secrets/USAGE +9 -3
  30. data/lib/rails/commands/server/server_command.rb +14 -41
  31. data/lib/rails/commands/test/test_command.rb +2 -2
  32. data/lib/rails/configuration.rb +40 -10
  33. data/lib/rails/engine.rb +26 -15
  34. data/lib/rails/engine/configuration.rb +1 -0
  35. data/lib/rails/engine/updater.rb +1 -1
  36. data/lib/rails/gem_version.rb +3 -3
  37. data/lib/rails/generators.rb +29 -15
  38. data/lib/rails/generators/actions.rb +50 -29
  39. data/lib/rails/generators/actions/create_migration.rb +5 -0
  40. data/lib/rails/generators/app_base.rb +30 -19
  41. data/lib/rails/generators/base.rb +14 -11
  42. data/lib/rails/generators/database.rb +3 -4
  43. data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +3 -3
  44. data/lib/rails/generators/generated_attribute.rb +3 -9
  45. data/lib/rails/generators/migration.rb +2 -1
  46. data/lib/rails/generators/model_helpers.rb +26 -2
  47. data/lib/rails/generators/named_base.rb +1 -1
  48. data/lib/rails/generators/rails/app/USAGE +2 -1
  49. data/lib/rails/generators/rails/app/app_generator.rb +89 -15
  50. data/lib/rails/generators/rails/app/templates/Gemfile.tt +11 -11
  51. data/lib/rails/generators/rails/app/templates/Rakefile.tt +1 -1
  52. data/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +1 -1
  53. data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +11 -11
  54. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +2 -1
  55. data/lib/rails/generators/rails/app/templates/bin/rails.tt +2 -2
  56. data/lib/rails/generators/rails/app/templates/bin/rake.tt +2 -2
  57. data/lib/rails/generators/rails/app/templates/bin/setup.tt +4 -4
  58. data/lib/rails/generators/rails/app/templates/bin/spring.tt +7 -0
  59. data/lib/rails/generators/rails/app/templates/bin/yarn.tt +12 -6
  60. data/lib/rails/generators/rails/app/templates/config.ru.tt +2 -1
  61. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +14 -7
  62. data/lib/rails/generators/rails/app/templates/config/boot.rb.tt +8 -2
  63. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +3 -4
  64. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +10 -9
  65. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +11 -10
  66. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +10 -9
  67. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +11 -10
  68. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +11 -10
  69. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +10 -9
  70. data/lib/rails/generators/rails/app/templates/config/environment.rb.tt +1 -1
  71. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +17 -3
  72. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +15 -5
  73. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +12 -1
  74. data/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb.tt +4 -3
  75. data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +3 -1
  76. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_1.rb.tt +48 -0
  77. data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -0
  78. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +6 -1
  79. data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +1 -1
  80. data/lib/rails/generators/rails/app/templates/gitattributes.tt +14 -0
  81. data/lib/rails/generators/rails/app/templates/gitignore.tt +0 -1
  82. data/lib/rails/generators/rails/app/templates/package.json.tt +1 -1
  83. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +5 -5
  84. data/lib/rails/generators/rails/assets/USAGE +2 -3
  85. data/lib/rails/generators/rails/benchmark/USAGE +19 -0
  86. data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +29 -0
  87. data/lib/rails/generators/rails/benchmark/templates/benchmark.rb.tt +15 -0
  88. data/lib/rails/generators/rails/controller/USAGE +2 -2
  89. data/lib/rails/generators/rails/controller/controller_generator.rb +2 -40
  90. data/lib/rails/generators/rails/credentials/credentials_generator.rb +1 -1
  91. data/lib/rails/generators/rails/generator/USAGE +2 -2
  92. data/lib/rails/generators/rails/generator/templates/USAGE.tt +1 -1
  93. data/lib/rails/generators/rails/helper/USAGE +2 -3
  94. data/lib/rails/generators/rails/integration_test/USAGE +2 -2
  95. data/lib/rails/generators/rails/migration/USAGE +4 -4
  96. data/lib/rails/generators/rails/model/USAGE +15 -16
  97. data/lib/rails/generators/rails/plugin/plugin_generator.rb +24 -23
  98. data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +10 -19
  99. data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +3 -10
  100. data/lib/rails/generators/rails/plugin/templates/Rakefile.tt +4 -18
  101. data/lib/rails/generators/rails/plugin/templates/app/controllers/%namespaced_name%/application_controller.rb.tt +0 -1
  102. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +3 -3
  103. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +13 -11
  104. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%.rb.tt +1 -0
  105. data/lib/rails/generators/rails/plugin/templates/rails/boot.rb.tt +1 -1
  106. data/lib/rails/generators/rails/plugin/templates/test/%namespaced_name%_test.rb.tt +4 -4
  107. data/lib/rails/generators/rails/plugin/templates/test/integration/navigation_test.rb.tt +1 -1
  108. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +0 -3
  109. data/lib/rails/generators/rails/resource/USAGE +4 -4
  110. data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +2 -27
  111. data/lib/rails/generators/rails/scaffold/USAGE +5 -5
  112. data/lib/rails/generators/rails/scaffold_controller/USAGE +2 -2
  113. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +6 -0
  114. data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -1
  115. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +1 -1
  116. data/lib/rails/generators/rails/system_test/USAGE +2 -2
  117. data/lib/rails/generators/rails/task/USAGE +3 -3
  118. data/lib/rails/generators/test_case.rb +1 -1
  119. data/lib/rails/generators/test_unit/controller/controller_generator.rb +2 -0
  120. data/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt +3 -3
  121. data/lib/rails/generators/test_unit/generator/templates/generator_test.rb.tt +2 -2
  122. data/lib/rails/generators/test_unit/integration/templates/integration_test.rb.tt +1 -1
  123. data/lib/rails/generators/test_unit/job/templates/unit_test.rb.tt +1 -1
  124. data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb.tt +1 -1
  125. data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +1 -1
  126. data/lib/rails/generators/test_unit/model/templates/unit_test.rb.tt +1 -1
  127. data/lib/rails/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +1 -1
  128. data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +2 -2
  129. data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +1 -1
  130. data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +1 -1
  131. data/lib/rails/generators/testing/assertions.rb +2 -2
  132. data/lib/rails/generators/testing/behaviour.rb +1 -1
  133. data/lib/rails/info.rb +1 -1
  134. data/lib/rails/info_controller.rb +1 -1
  135. data/lib/rails/mailers_controller.rb +1 -0
  136. data/lib/rails/paths.rb +14 -6
  137. data/lib/rails/rack/logger.rb +1 -1
  138. data/lib/rails/railtie.rb +29 -3
  139. data/lib/rails/railtie/configuration.rb +3 -2
  140. data/lib/rails/source_annotation_extractor.rb +1 -15
  141. data/lib/rails/tasks.rb +0 -4
  142. data/lib/rails/tasks/engine.rake +1 -4
  143. data/lib/rails/tasks/framework.rake +7 -1
  144. data/lib/rails/tasks/misc.rake +1 -1
  145. data/lib/rails/tasks/statistics.rake +1 -1
  146. data/lib/rails/templates/rails/mailers/email.html.erb +1 -0
  147. data/lib/rails/templates/rails/welcome/index.html.erb +1 -1
  148. data/lib/rails/test_unit/reporter.rb +2 -1
  149. data/lib/rails/test_unit/runner.rb +20 -3
  150. data/lib/rails/test_unit/testing.rake +6 -0
  151. metadata +26 -32
  152. data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml.tt +0 -50
  153. data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml.tt +0 -86
  154. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt +0 -45
  155. data/lib/rails/generators/rails/plugin/templates/rails/application.rb.tt +0 -23
  156. data/lib/rails/tasks/annotations.rake +0 -22
  157. data/lib/rails/tasks/dev.rake +0 -11
  158. data/lib/rails/tasks/initializers.rake +0 -9
  159. data/lib/rails/tasks/routes.rake +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1783a20cd4c29f4ad33cf81d3a1a3c121f4a41c26aed959e3ad44230c4920248
4
- data.tar.gz: d8929d30bd4093901f6737ae8ef9a0bac1ffaa1a42de754a6fca8249dc8a9f4d
3
+ metadata.gz: ac1f674c7449e11079fc024e3ad0615358ac700713d2e274c3fd2fb1ccb891d8
4
+ data.tar.gz: 1d8841ea97183fa77784e1a7ef3ffdec7796fa281de6878f4aa3995d3e86078c
5
5
  SHA512:
6
- metadata.gz: 53b042fe3f0aeadc6ded457fbeeb601a12dfb77d5007bcfc11ab72815933bbb7a0f7775dcc9626c77168296dba6b0b5fd9bf3ba363b6b918250a3b1d9d238f5e
7
- data.tar.gz: 567926f2dc3711220c766f25cffadaf7b1bb14cdccb98b17dc53a2016c2bb908a9b6102dea09a22dca4b4c8a9cccd49188ff4d9a5cc88e4e165747c96cbd9ea1
6
+ metadata.gz: af92feb6af3f6b35e4974f91dd1b869736a45ab74c8b6217ee8b43bd62443efe22769b800b5adcc7810b18fb82a17a98ec888010fb984ef557989d3249ae81a7
7
+ data.tar.gz: 3bc9759bea256a05a1a8d4160ded6fcaaf2657f880634de13863c6448f20d7d9bcdbb4970e9c0424b17add8823c91c216daaf2377a7b4f77c9078a25d2d51852
@@ -1,510 +1,376 @@
1
- ## Rails 6.0.3.1 (May 18, 2020) ##
1
+ ## Rails 6.1.0.rc2 (December 01, 2020) ##
2
2
 
3
3
  * No changes.
4
4
 
5
5
 
6
- ## Rails 6.0.3 (May 06, 2020) ##
6
+ ## Rails 6.1.0.rc1 (November 02, 2020) ##
7
7
 
8
- * Cache compiled view templates when running tests by default
8
+ * Added `Railtie#server` hook called when Rails starts a server.
9
+ This is useful in case your application or a library needs to run
10
+ another process next to the Rails server. This is quite common in development
11
+ for instance to run the Webpack or the React server.
9
12
 
10
- When generating a new app without `--skip-spring`, caching classes is
11
- disabled in `environments/test.rb`. This implicitly disables caching
12
- view templates too. This change will enable view template caching by
13
- adding this to the generated `environments/test.rb`:
14
-
15
- ````ruby
16
- config.action_view.cache_template_loading = true
17
- ````
18
-
19
- *Jorge Manrubia*
20
-
21
- * `Rails::Application#eager_load!` is available again to load application code
22
- manually as it was possible in previous versions.
13
+ It can be used like this:
23
14
 
24
- Please, note this is not integrated with the whole eager loading logic that
25
- runs when Rails boots with eager loading enabled, you can think of this
26
- method as a vanilla recursive code loader.
27
-
28
- This ability has been restored because there are some use cases for it, such
29
- as indexers that need to have all application classes and modules in memory.
30
-
31
- *Xavier Noria*
15
+ ```ruby
16
+ class MyRailtie < Rails::Railtie
17
+ server do
18
+ WebpackServer.run
19
+ end
20
+ end
21
+ ```
32
22
 
33
- * Generators that inherit from NamedBase respect `--force` option
23
+ *Edouard Chin*
34
24
 
35
- *Josh Brody*
25
+ * Remove deprecated `rake dev:cache` tasks.
36
26
 
37
- * Regression fix: The Rake task `zeitwerk:check` supports eager loaded
38
- namespaces which do not have eager load paths, like the recently added
39
- `i18n`. These namespaces are only required to respond to `eager_load!`.
27
+ *Rafael Mendonça França*
40
28
 
41
- *Xavier Noria*
29
+ * Remove deprecated `rake routes` tasks.
42
30
 
31
+ *Rafael Mendonça França*
43
32
 
44
- ## Rails 6.0.2.2 (March 19, 2020) ##
33
+ * Remove deprecated `rake initializers` tasks.
45
34
 
46
- * No changes.
35
+ *Rafael Mendonça França*
47
36
 
37
+ * Remove deprecated support for using the `HOST` environment variable to specify the server IP.
48
38
 
49
- ## Rails 6.0.2.1 (December 18, 2019) ##
39
+ *Rafael Mendonça França*
50
40
 
51
- * No changes.
41
+ * Remove deprecated `server` argument from the rails server command.
52
42
 
43
+ *Rafael Mendonça França*
53
44
 
54
- ## Rails 6.0.2 (December 13, 2019) ##
45
+ * Remove deprecated `SOURCE_ANNOTATION_DIRECTORIES` environment variable support from `rails notes`.
55
46
 
56
- * Fix the collision check for the scaffold generator.
47
+ *Rafael Mendonça França*
57
48
 
58
- *Ryan Robeson*
49
+ * Remove deprecated `connection` option in the `rails dbconsole` command.
59
50
 
60
- ## Rails 6.0.1 (November 5, 2019) ##
51
+ *Rafael Mendonça França*
61
52
 
62
- * The `zeitwerk:check` Rake task reports files outside the app's root
63
- directory, as in engines loaded from gems.
53
+ * Remove depreated `rake notes` tasks.
64
54
 
65
- *Xavier Noria*
55
+ *Rafael Mendonça França*
66
56
 
67
- * Fixed a possible error when using the evented file update checker.
57
+ * Return a 405 Method Not Allowed response when a request uses an unknown HTTP method.
68
58
 
69
- *Yuji Yaginuma*
59
+ Fixes #38998.
70
60
 
71
- * The sqlite3 database files created by the parallel testing feature are
72
- included in the default `.gitignore` file for newly-generated apps.
61
+ *Loren Norman*
73
62
 
74
- *Yasuo Honda*
63
+ * Make railsrc file location xdg-specification compliant
75
64
 
76
- * `rails new` generates a `.keep` file in `tmp/pids`. This fixes starting
77
- a server via `rackup` instead of `rails server`.
65
+ `rails new` will now look for the default `railsrc` file at
66
+ `$XDG_CONFIG_HOME/rails/railsrc` (or `~/.config/rails/railsrc` if
67
+ `XDG_CONFIG_HOME` is not set). If this file does not exist, `rails new`
68
+ will fall back to `~/.railsrc`.
78
69
 
79
- *Rafael Mendonça França*
70
+ The fallback behaviour means this does not cause any breaking changes.
80
71
 
72
+ *Nick Wolf*
81
73
 
82
- ## Rails 6.0.0 (August 16, 2019) ##
74
+ * Change the default logging level from :debug to :info to avoid inadvertent exposure of personally
75
+ identifiable information (PII) in production environments.
83
76
 
84
- * `Rails.autoloaders.log!` is a logging shortcut to get the activity of the
85
- loaders printed to standard output. May be handy for troubleshooting.
77
+ *Eric M. Payne*
86
78
 
87
- *Xavier Noria*
79
+ * Automatically generate abstract class when using multiple databases.
88
80
 
81
+ When generating a scaffold for a multiple database application, Rails will now automatically generate the abstract class for the database when the database argument is passed. This abstract class will include the connection information for the writing configuration and any models generated for that database will automatically inherit from the abstract class.
89
82
 
90
- ## Rails 6.0.0.rc2 (July 22, 2019) ##
83
+ Usage:
91
84
 
92
- * The new configuration point `config.add_autoload_paths_to_load_path` allows
93
- users to opt-out from adding autoload paths to `$LOAD_PATH`. This flag is
94
- `true` by default, but it is recommended to be set to `false` in `:zeitwerk`
95
- mode early, in `config/application.rb`.
85
+ ```bash
86
+ $ bin/rails generate scaffold Pet name:string --database=animals
87
+ ```
96
88
 
97
- Zeitwerk uses only absolute paths internally, and applications running in
98
- `:zeitwerk` mode do not need `require_dependency`, so models, controllers,
99
- jobs, etc. do not need to be in `$LOAD_PATH`. Setting this to `false` saves
100
- Ruby from checking these directories when resolving `require` calls with
101
- relative paths, and saves Bootsnap work and RAM, since it does not need to
102
- build an index for them.
89
+ Will create an abstract class for the animals connection.
103
90
 
104
- *Xavier Noria*
91
+ ```ruby
92
+ class AnimalsRecord < ApplicationRecord
93
+ self.abstract_class = true
105
94
 
106
- ## Rails 6.0.0.rc1 (April 24, 2019) ##
95
+ connects_to database: { writing: :animals }
96
+ end
97
+ ```
107
98
 
108
- * Applications upgrading to Rails 6 can run the command
99
+ And generate a `Pet` model that inherits from the new `AnimalsRecord`:
109
100
 
110
- ```
111
- bin/rails zeitwerk:check
101
+ ```ruby
102
+ class Pet < AnimalsRecord
103
+ end
112
104
  ```
113
105
 
114
- to check if the project structure they were using with the classic
115
- autoloader is compatible with `:zeitwerk` mode.
106
+ If you already have an abstract class and it follows a different pattern than Rails defaults, you can pass a parent class with the database argument.
116
107
 
117
- *Matilda Smeds* & *Xavier Noria*
108
+ ```bash
109
+ $ bin/rails generate scaffold Pet name:string --database=animals --parent=SecondaryBase
110
+ ```
118
111
 
119
- * Allow loading seeds without ActiveJob.
112
+ This will ensure the model inherits from the `SecondaryBase` parent instead of `AnimalsRecord`
120
113
 
121
- Fixes #35782
114
+ ```ruby
115
+ class Pet < SecondaryBase
116
+ end
117
+ ```
122
118
 
123
- *Jeremy Weathers*
119
+ *Eileen M. Uchitelle*, *John Crepezzi*
124
120
 
125
- * `null: false` is set in the migrations by default for column pointed by
126
- `belongs_to` / `references` association generated by model generator.
121
+ * Accept params from url to prepopulate the Inbound Emails form in Rails conductor.
127
122
 
128
- Also deprecate passing {required} to the model generator.
123
+ *Chris Oliver*
129
124
 
130
- *Prathamesh Sonpatki*
125
+ * Create a new rails app using a minimal stack.
131
126
 
132
- * New applications get `config.cache_classes = false` in `config/environments/test.rb`
133
- unless `--skip-spring`.
127
+ `rails new cool_app --minimal`
134
128
 
135
- *Xavier Noria*
129
+ All the following are excluded from your minimal stack:
136
130
 
137
- * Autoloading during initialization is deprecated.
131
+ - action_cable
132
+ - action_mailbox
133
+ - action_mailer
134
+ - action_text
135
+ - active_job
136
+ - active_storage
137
+ - bootsnap
138
+ - jbuilder
139
+ - spring
140
+ - system_tests
141
+ - turbolinks
142
+ - webpack
138
143
 
139
- *Xavier Noria*
144
+ *Haroon Ahmed*, *DHH*
140
145
 
141
- * Only force `:async` ActiveJob adapter to `:inline` during seeding.
146
+ * Add default ENV variable option with BACKTRACE to turn off backtrace cleaning when debugging framework code in the
147
+ generated config/initializers/backtrace_silencers.rb.
142
148
 
143
- *BatedUrGonnaDie*
149
+ `BACKTRACE=1 ./bin/rails runner "MyClass.perform"`
144
150
 
145
- * The `connection` option of `rails dbconsole` command is deprecated in
146
- favor of `database` option.
151
+ *DHH*
147
152
 
148
- *Yuji Yaginuma*
153
+ * The autoloading guide for Zeitwerk mode documents how to autoload classes
154
+ during application boot in a safe way.
149
155
 
150
- * Replace `chromedriver-helper` gem with `webdrivers` in default Gemfile.
151
- `chromedriver-helper` is deprecated as of March 31, 2019 and won't
152
- receive any further updates.
156
+ *Haroon Ahmed*, *Xavier Noria*
153
157
 
154
- *Guillermo Iguaran‮*
158
+ * The `classic` autoloader starts its deprecation cycle.
155
159
 
156
- * Applications running in `:zeitwerk` mode that use `bootsnap` need
157
- to upgrade `bootsnap` to at least 1.4.2.
160
+ New Rails projects are strongly discouraged from using `classic`, and we recommend that existing projects running on `classic` switch to `zeitwerk` mode when upgrading. Please check the [_Upgrading Ruby on Rails_](https://guides.rubyonrails.org/upgrading_ruby_on_rails.html) guide for tips.
158
161
 
159
162
  *Xavier Noria*
160
163
 
161
- * Add `config.disable_sandbox` option to Rails console.
162
-
163
- This setting will disable `rails console --sandbox` mode, preventing
164
- developer from accidentally starting a sandbox console,
165
- which when left inactive, can cause the database server to run out of memory.
164
+ * Adds `rails test:all` for running all tests in the test directory.
166
165
 
167
- *Prem Sichanugrist*
166
+ This runs all test files in the test directory, including system tests.
168
167
 
169
- * Add `-e/--environment` option to `rails initializers`.
170
-
171
- *Yuji Yaginuma*
168
+ *Niklas Häusele*
172
169
 
170
+ * Add `config.generators.after_generate` for processing to generated files.
173
171
 
174
- ## Rails 6.0.0.beta3 (March 11, 2019) ##
172
+ Register a callback that will get called right after generators has finished.
175
173
 
176
- * Generate random development secrets
174
+ *Yuji Yaginuma*
177
175
 
178
- A random development secret is now generated to tmp/development_secret.txt
176
+ * Make test file patterns configurable via Environment variables
179
177
 
180
- This avoids an issue where development mode servers were vulnerable to
181
- remote code execution.
178
+ This makes test file patterns configurable via two environment variables:
179
+ `DEFAULT_TEST`, to configure files to test, and `DEFAULT_TEST_EXCLUDE`,
180
+ to configure files to exclude from testing.
182
181
 
183
- Fixes CVE-2019-5420
182
+ These values were hardcoded before, which made it difficult to add
183
+ new categories of tests that should not be executed by default (e.g:
184
+ smoke tests).
184
185
 
185
- *Eileen M. Uchitelle*, *Aaron Patterson*, *John Hawthorn*
186
+ *Jorge Manrubia*
186
187
 
188
+ * No longer include `rake rdoc` task when generating plugins.
187
189
 
188
- ## Rails 6.0.0.beta2 (February 25, 2019) ##
190
+ To generate docs, use the `rdoc lib` command instead.
189
191
 
190
- * Fix non-symbol access to nested hashes returned from `Rails::Application.config_for`
191
- being broken by allowing non-symbol access with a deprecation notice.
192
+ *Jonathan Hefner*
192
193
 
193
- *Ufuk Kayserilioglu*
194
+ * Allow relative paths with trailing slashes to be passed to `rails test`.
194
195
 
195
- * Fix deeply nested namespace command printing.
196
+ *Eugene Kenny*
196
197
 
197
- *Gannon McGibbon*
198
+ * Add `rack-mini-profiler` gem to the default `Gemfile`.
198
199
 
200
+ `rack-mini-profiler` displays performance information such as SQL time and flame graphs.
201
+ It's enabled by default in development environment, but can be enabled in production as well.
202
+ See the gem [README](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md) for information on how to enable it in production.
199
203
 
200
- ## Rails 6.0.0.beta1 (January 18, 2019) ##
204
+ *Osama Sayegh*
201
205
 
202
- * Remove deprecated `after_bundle` helper inside plugins templates.
206
+ * `rails stats` will now count TypeScript files toward JavaScript stats.
203
207
 
204
- *Rafael Mendonça França*
208
+ *Joshua Cody*
205
209
 
206
- * Remove deprecated support to old `config.ru` that use the application class as argument of `run`.
210
+ * Run `git init` when generating plugins.
207
211
 
208
- *Rafael Mendonça França*
212
+ Opt out with `--skip-git`.
209
213
 
210
- * Remove deprecated `environment` argument from the rails commands.
214
+ *OKURA Masafumi*
211
215
 
212
- *Rafael Mendonça França*
216
+ * Add benchmark generator.
213
217
 
214
- * Remove deprecated `capify!`.
218
+ Introduce benchmark generator to benchmark Rails applications.
215
219
 
216
- *Rafael Mendonça França*
220
+ `rails generate benchmark opt_compare`
217
221
 
218
- * Remove deprecated `config.secret_token`.
222
+ This creates a benchmark file that uses [`benchmark-ips`](https://github.com/evanphx/benchmark-ips).
223
+ By default, two code blocks can be benchmarked using the `before` and `after` reports.
219
224
 
220
- *Rafael Mendonça França*
225
+ You can run the generated benchmark file using:
226
+ `ruby script/benchmarks/opt_compare.rb`
221
227
 
222
- * Seed database with inline ActiveJob job adapter.
228
+ *Kevin Jalbert*, *Gannon McGibbon*
223
229
 
224
- *Gannon McGibbon*
230
+ * Cache compiled view templates when running tests by default.
225
231
 
226
- * Add `rails db:system:change` command for changing databases.
232
+ When generating a new app without `--skip-spring`, caching classes is
233
+ disabled in `environments/test.rb`. This implicitly disables caching
234
+ view templates too. This change will enable view template caching by
235
+ adding this to the generated `environments/test.rb`:
227
236
 
237
+ ```ruby
238
+ config.action_view.cache_template_loading = true
228
239
  ```
229
- bin/rails db:system:change --to=postgresql
230
- force config/database.yml
231
- gsub Gemfile
232
- ```
233
-
234
- The change command copies a template `config/database.yml` with
235
- the target database adapter into your app, and replaces your database gem
236
- with the target database gem.
237
-
238
- *Gannon McGibbon*
239
-
240
- * Add `rails test:channels`.
241
-
242
- *bogdanvlviv*
243
-
244
- * Use original `bundler` environment variables during the process of generating a new rails project.
245
-
246
- *Marco Costa*
247
-
248
- * Send Active Storage analysis and purge jobs to dedicated queues by default.
249
-
250
- Analysis jobs now use the `:active_storage_analysis` queue, and purge jobs
251
- now use the `:active_storage_purge` queue. This matches Action Mailbox,
252
- which sends its jobs to dedicated queues by default.
253
-
254
- *George Claghorn*
255
-
256
- * Add `rails test:mailboxes`.
257
-
258
- *George Claghorn*
259
240
 
260
- * Introduce guard against DNS rebinding attacks.
261
-
262
- The `ActionDispatch::HostAuthorization` is a new middleware that prevents
263
- against DNS rebinding and other `Host` header attacks. It is included in
264
- the development environment by default with the following configuration:
265
-
266
- Rails.application.config.hosts = [
267
- IPAddr.new("0.0.0.0/0"), # All IPv4 addresses.
268
- IPAddr.new("::/0"), # All IPv6 addresses.
269
- "localhost" # The localhost reserved domain.
270
- ]
271
-
272
- In other environments `Rails.application.config.hosts` is empty and no
273
- `Host` header checks will be done. If you want to guard against header
274
- attacks on production, you have to manually permit the allowed hosts
275
- with:
241
+ *Jorge Manrubia*
276
242
 
277
- Rails.application.config.hosts << "product.com"
243
+ * Introduce middleware move operations.
278
244
 
279
- The host of a request is checked against the `hosts` entries with the case
280
- operator (`#===`), which lets `hosts` support entries of type `Regexp`,
281
- `Proc` and `IPAddr` to name a few. Here is an example with a regexp.
245
+ With this change, you no longer need to delete and reinsert a middleware to
246
+ move it from one place to another in the stack:
282
247
 
283
- # Allow requests from subdomains like `www.product.com` and
284
- # `beta1.product.com`.
285
- Rails.application.config.hosts << /.*\.product\.com/
248
+ ```ruby
249
+ config.middleware.move_before ActionDispatch::Flash, Magical::Unicorns
250
+ ```
286
251
 
287
- A special case is supported that allows you to permit all sub-domains:
252
+ This will move the `Magical::Unicorns` middleware before
253
+ `ActionDispatch::Flash`. You can also move it after with:
288
254
 
289
- # Allow requests from subdomains like `www.product.com` and
290
- # `beta1.product.com`.
291
- Rails.application.config.hosts << ".product.com"
255
+ ```ruby
256
+ config.middleware.move_after ActionDispatch::Flash, Magical::Unicorns
257
+ ```
292
258
 
293
259
  *Genadi Samokovarov*
294
260
 
295
- * Remove redundant suffixes on generated helpers.
296
-
297
- *Gannon McGibbon*
298
-
299
- * Remove redundant suffixes on generated integration tests.
300
-
301
- *Gannon McGibbon*
302
-
303
- * Fix boolean interaction in scaffold system tests.
304
-
305
- *Gannon McGibbon*
306
-
307
- * Remove redundant suffixes on generated system tests.
308
-
309
- *Gannon McGibbon*
310
-
311
- * Add an `abort_on_failure` boolean option to the generator method that shell
312
- out (`generate`, `rake`, `rails_command`) to abort the generator if the
313
- command fails.
314
-
315
- *David Rodríguez*
316
-
317
- * Remove `app/assets` and `app/javascript` from `eager_load_paths` and `autoload_paths`.
318
-
319
- *Gannon McGibbon*
261
+ * Generators that inherit from NamedBase respect `--force` option.
320
262
 
321
- * Use Ids instead of memory addresses when displaying references in scaffold views.
322
-
323
- Fixes #29200.
263
+ *Josh Brody*
324
264
 
325
- *Rasesh Patel*
265
+ * Allow configuration of eager_load behaviour for rake environment:
326
266
 
327
- * Adds support for multiple databases to `rails db:migrate:status`.
328
- Subtasks are also added to get the status of individual databases (eg. `rails db:migrate:status:animals`).
267
+ config.rake_eager_load
329
268
 
330
- *Gannon McGibbon*
269
+ Defaults to `false` as per previous behaviour.
331
270
 
332
- * Use Webpacker by default to manage app-level JavaScript through the new app/javascript directory.
333
- Sprockets is now solely in charge, by default, of compiling CSS and other static assets.
334
- Action Cable channel generators will create ES6 stubs rather than use CoffeeScript.
335
- Active Storage, Action Cable, Turbolinks, and Rails-UJS are loaded by a new application.js pack.
336
- Generators no longer generate JavaScript stubs.
271
+ *Thierry Joyal*
337
272
 
338
- *DHH*, *Lachlan Sylvester*
273
+ * Ensure Rails migration generator respects system-wide primary key config.
339
274
 
340
- * Add `database` (aliased as `db`) option to model generator to allow
341
- setting the database. This is useful for applications that use
342
- multiple databases and put migrations per database in their own directories.
275
+ When rails is configured to use a specific primary key type:
343
276
 
277
+ ```ruby
278
+ config.generators do |g|
279
+ g.orm :active_record, primary_key_type: :uuid
280
+ end
344
281
  ```
345
- bin/rails g model Room capacity:integer --database=kingston
346
- invoke active_record
347
- create db/kingston_migrate/20180830151055_create_rooms.rb
348
- ```
349
-
350
- Because rails scaffolding uses the model generator, you can
351
- also specify a database with the scaffold generator.
352
-
353
- *Gannon McGibbon*
354
-
355
- * Raise an error when "recyclable cache keys" are being used by a cache store
356
- that does not explicitly support it. Custom cache keys that do support this feature
357
- can bypass this error by implementing the `supports_cache_versioning?` method on their
358
- class and returning a truthy value.
359
-
360
- *Richard Schneeman*
361
-
362
- * Support environment specific credentials overrides.
363
-
364
- So any environment will look for `config/credentials/#{Rails.env}.yml.enc` and fall back
365
- to `config/credentials.yml.enc`.
366
-
367
- The encryption key can be in `ENV["RAILS_MASTER_KEY"]` or `config/credentials/production.key`.
368
-
369
- Environment credentials overrides can be edited with `rails credentials:edit --environment production`.
370
- If no override is set up for the passed environment, it will be created.
371
-
372
- Additionally, the default lookup paths can be overwritten with these configs:
373
-
374
- - `config.credentials.content_path`
375
- - `config.credentials.key_path`
376
-
377
- *Wojciech Wnętrzak*
378
-
379
- * Make `ActiveSupport::Cache::NullStore` the default cache store in the test environment.
380
-
381
- *Michael C. Nelson*
382
282
 
383
- * Emit warning for unknown inflection rule when generating model.
384
-
385
- *Yoshiyuki Kinjo*
386
-
387
- * Add `database` (aliased as `db`) option to migration generator.
388
-
389
- If you're using multiple databases and have a folder for each database
390
- for migrations (ex db/migrate and db/new_db_migrate) you can now pass the
391
- `--database` option to the generator to make sure the the migration
392
- is inserted into the correct folder.
283
+ Previously:
393
284
 
285
+ ```bash
286
+ $ bin/rails g migration add_location_to_users location:references
394
287
  ```
395
- rails g migration CreateHouses --database=kingston
396
- invoke active_record
397
- create db/kingston_migrate/20180830151055_create_houses.rb
398
- ```
399
-
400
- *Eileen M. Uchitelle*
401
-
402
- * Deprecate `rake routes` in favor of `rails routes`.
403
-
404
- *Yuji Yaginuma*
405
-
406
- * Deprecate `rake initializers` in favor of `rails initializers`.
407
-
408
- *Annie-Claude Côté*
409
-
410
- * Deprecate `rake dev:cache` in favor of `rails dev:cache`.
411
-
412
- *Annie-Claude Côté*
413
-
414
- * Deprecate `rails notes` subcommands in favor of passing an `annotations` argument to `rails notes`.
415
-
416
- The following subcommands are replaced by passing `--annotations` or `-a` to `rails notes`:
417
- - `rails notes:custom ANNOTATION=custom` is deprecated in favor of using `rails notes -a custom`.
418
- - `rails notes:optimize` is deprecated in favor of using `rails notes -a OPTIMIZE`.
419
- - `rails notes:todo` is deprecated in favor of using`rails notes -a TODO`.
420
- - `rails notes:fixme` is deprecated in favor of using `rails notes -a FIXME`.
421
-
422
- *Annie-Claude Côté*
423
288
 
424
- * Deprecate `SOURCE_ANNOTATION_DIRECTORIES` environment variable used by `rails notes`
425
- through `Rails::SourceAnnotationExtractor::Annotation` in favor of using `config.annotations.register_directories`.
289
+ The references line in the migration would not have `type: :uuid`.
290
+ This change causes the type to be applied appropriately.
426
291
 
427
- *Annie-Claude Côté*
292
+ *Louis-Michel Couture*, *Dermot Haughey*
428
293
 
429
- * Deprecate `rake notes` in favor of `rails notes`.
294
+ * Deprecate `Rails::DBConsole#config`.
430
295
 
431
- *Annie-Claude Côté*
296
+ `Rails::DBConsole#config` is deprecated without replacement. Use `Rails::DBConsole.db_config.configuration_hash` instead.
432
297
 
433
- * Don't generate unused files in `app:update` task.
298
+ *Eileen M. Uchitelle*, *John Crepezzi*
434
299
 
435
- Skip the assets' initializer when sprockets isn't loaded.
300
+ * `Rails.application.config_for` merges shared configuration deeply.
436
301
 
437
- Skip `config/spring.rb` when spring isn't loaded.
438
-
439
- Skip yarn's contents when yarn integration isn't used.
440
-
441
- *Tsukuru Tanimichi*
442
-
443
- * Make the master.key file read-only for the owner upon generation on
444
- POSIX-compliant systems.
445
-
446
- Previously:
447
-
448
- $ ls -l config/master.key
449
- -rw-r--r-- 1 owner group 32 Jan 1 00:00 master.key
450
-
451
- Now:
302
+ ```yaml
303
+ # config/example.yml
304
+ shared:
305
+ foo:
306
+ bar:
307
+ baz: 1
308
+ development:
309
+ foo:
310
+ bar:
311
+ qux: 2
312
+ ```
452
313
 
453
- $ ls -l config/master.key
454
- -rw------- 1 owner group 32 Jan 1 00:00 master.key
314
+ ```ruby
315
+ # Previously
316
+ Rails.application.config_for(:example)[:foo][:bar] #=> { qux: 2 }
455
317
 
456
- Fixes #32604.
318
+ # Now
319
+ Rails.application.config_for(:example)[:foo][:bar] #=> { baz: 1, qux: 2 }
320
+ ```
457
321
 
458
- *Jose Luis Duran*
322
+ *Yuhei Kiriyama*
459
323
 
460
- * Deprecate support for using the `HOST` environment variable to specify the server IP.
324
+ * Remove access to values in nested hashes returned by `Rails.application.config_for` via String keys.
461
325
 
462
- The `BINDING` environment variable should be used instead.
326
+ ```yaml
327
+ # config/example.yml
328
+ development:
329
+ options:
330
+ key: value
331
+ ```
463
332
 
464
- Fixes #29516.
333
+ ```ruby
334
+ Rails.application.config_for(:example).options
335
+ ```
465
336
 
466
- *Yuji Yaginuma*
337
+ This used to return a Hash on which you could access values with String keys. This was deprecated in 6.0, and now doesn't work anymore.
467
338
 
468
- * Deprecate passing Rack server name as a regular argument to `rails server`.
339
+ *Étienne Barrié*
469
340
 
470
- Previously:
341
+ * Configuration files for environments (`config/environments/*.rb`) are
342
+ now able to modify `autoload_paths`, `autoload_once_paths`, and
343
+ `eager_load_paths`.
471
344
 
472
- $ bin/rails server thin
345
+ As a consequence, applications cannot autoload within those files. Before, they technically could, but changes in autoloaded classes or modules had no effect anyway in the configuration because reloading does not reboot.
473
346
 
474
- There wasn't an explicit option for the Rack server to use, now we have the
475
- `--using` option with the `-u` short switch.
347
+ Ways to use application code in these files:
476
348
 
477
- Now:
349
+ * Define early in the boot process a class that is not reloadable, from which the application takes configuration values that get passed to the framework.
478
350
 
479
- $ bin/rails server -u thin
351
+ ```ruby
352
+ # In config/application.rb, for example.
353
+ require "#{Rails.root}/lib/my_app/config"
480
354
 
481
- This change also improves the error message if a missing or mistyped rack
482
- server is given.
355
+ # In config/environments/development.rb, for example.
356
+ config.foo = MyApp::Config.foo
357
+ ```
483
358
 
484
- *Genadi Samokovarov*
359
+ * If the class has to be reloadable, then wrap the configuration code in a `to_prepare` block:
485
360
 
486
- * Add "rails routes --expanded" option to output routes in expanded mode like
487
- "psql --expanded". Result looks like:
361
+ ```ruby
362
+ config.to_prepare do
363
+ config.foo = MyModel.foo
364
+ end
365
+ ```
488
366
 
489
- ```
490
- $ rails routes --expanded
491
- --[ Route 1 ]------------------------------------------------------------
492
- Prefix | high_scores
493
- Verb | GET
494
- URI | /high_scores(.:format)
495
- Controller#Action | high_scores#index
496
- --[ Route 2 ]------------------------------------------------------------
497
- Prefix | new_high_score
498
- Verb | GET
499
- URI | /high_scores/new(.:format)
500
- Controller#Action | high_scores#new
501
- ```
367
+ That assigns the latest `MyModel.foo` to `config.foo` when the application boots, and each time there is a reload. But whether that has an effect or not depends on the configuration point, since it is not uncommon for engines to read the application configuration during initialization and set their own state from them. That process happens only on boot, not on reloads, and if that is how `config.foo` worked, resetting it would have no effect in the state of the engine.
502
368
 
503
- *Benoit Tigeot*
369
+ *Allen Hsu* & *Xavier Noria*
504
370
 
505
- * Rails 6 requires Ruby 2.5.0 or newer.
371
+ * Support using environment variable to set pidfile.
506
372
 
507
- *Jeremy Daer*, *Kasper Timm Hansen*
373
+ *Ben Thorner*
508
374
 
509
375
 
510
- Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/railties/CHANGELOG.md) for previous changes.
376
+ Please check [6-0-stable](https://github.com/rails/rails/blob/6-0-stable/railties/CHANGELOG.md) for previous changes.