rails/railties
Hartley McGuire c2901eb084
Restore some config.secret_key_base functionality
The [deprecated secrets removal][1] ended up removing a bit of
non-deprecated functionality related to config.secret_key_base:

- the original implementation prioritized the value of
  config.secret_key_base over other sources in all environments
- if unset, the value of config.secret_key_base would be updated to
  whichever fallback value was found

The new implementation only sets config.secret_key_base to a fallback
value when Rails.env.local?, and never considers it at all in
production.

This commit aims to restore this missing functionality as well as
simplify the implementation:

- Rails.application.secret_key_base now always delegates to
  config.secret_key_base (like the pre-secret-removal implementation)
- secret_key_base validation was moved from the reader to the writer
- config.secret_key_base now handles setting itself to a fallback value
  when unset
- In addition, generate_local_secret was simplified because it
  previously did 3 things: file manipulation, setting
  config.secret_key_base, and returning a value. Now it only creates the
  file if necessary and returns the value stored in it

The new implementation has an additional benefit, which is that manually
set config.secret_key_base values are now validated, whereas previously
only fallback values were validated.

[1]: 0c76f17f2dbf0d7ad90c890e6f334743cacce41f

Co-authored-by: Petrik <petrik@deheus.net>
2024-06-10 23:04:23 -04:00
..
bin Adding frozen_string_literal pragma to Railties. 2017-08-14 19:08:09 +02:00
exe Adding frozen_string_literal pragma to Railties. 2017-08-14 19:08:09 +02:00
lib Restore some config.secret_key_base functionality 2024-06-10 23:04:23 -04:00
test Restore some config.secret_key_base functionality 2024-06-10 23:04:23 -04:00
.gitignore Install JavaScript packages before run test 2019-02-11 09:58:08 +09:00
CHANGELOG.md Changelog tweak for lazy routes 2024-06-06 11:37:31 -05:00
MIT-LICENSE Remove Copyright years (#47467) 2023-02-23 11:38:16 +01:00
railties.gemspec Register Rails console commands/helpers with its latest extension APIs 2024-05-01 22:14:53 +00:00
Rakefile Enable Rails minitest plugin in our rake tasks 2024-05-23 16:16:37 +00:00
RDOC_MAIN.md Fix list item numbering on API docs main page [ci-skip] 2023-08-17 16:22:16 -05:00
README.rdoc 🔗 Remove RDoc auto-link from Rails module everywhere 2023-06-23 10:49:30 +09:00

= Railties -- Gluing the Engine to the \Rails

Railties is responsible for gluing all frameworks together. Overall, it:

* handles the bootstrapping process for a \Rails application;

* manages the +rails+ command line interface;

* and provides the \Rails generators core.

== Download

The latest version of Railties can be installed with RubyGems:

* gem install railties

Source code can be downloaded as part of the \Rails project on GitHub

* https://github.com/rails/rails/tree/main/railties

== License

Railties is released under the MIT license:

* https://opensource.org/licenses/MIT

== Support

API documentation is at

* https://api.rubyonrails.org

Bug reports can be filed for the Ruby on \Rails project here:

* https://github.com/rails/rails/issues

Feature requests should be discussed on the rails-core mailing list here:

* https://discuss.rubyonrails.org/c/rubyonrails-core