-
Notifications
You must be signed in to change notification settings - Fork 23
fix: use a safer gsub_file
and update/remove file gsubs that were no longer doing anything
#533
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
gsub_file "config/environments/development.rb", | ||
"join('tmp', 'caching-dev.txt')", | ||
'join("tmp/caching-dev.txt")' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
note: this is no longer matching because of the quotes, but Rubocop can automatically fix this anyway now
config.force_ssl = ENV.fetch("RAILS_FORCE_SSL", "true").downcase != "false" | ||
RUBY | ||
gsub_file! "config/environments/production.rb", | ||
"config.force_ssl = true", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
note: Rails 7.1 now ships with this just enabled, but I think it's worth us keeping an env variable for toggling it just in case
gsub_file "config/initializers/filter_parameter_logging.rb", /\[:password\]/ do | ||
"%w[password secret session cookie csrf]" | ||
end | ||
gsub_file! "config/initializers/filter_parameter_logging.rb", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
note: this relates to #529 - technically I've fixed this gsub so we're now adding to the existing values, but we still want to re-review our options
gsub_file "config/environments/test.rb", | ||
"config.eager_load = false", | ||
"config.eager_load = defined?(SimpleCov).present?" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
note: Rails 7.1 has changed this to ENV["CI"].present?
rather than true
I don't think it's better to check if SimpleCov
is defined but maybe I'm wrong?
b50397d
to
790a0f7
Compare
The file manipulation methods provided by Thor don't stop execution when they fail to do the defined manipulation, instead in our case they print an error but then proceed; we actually want to error in this situation since the whole point of our template is to be applying our preferred practices meaning its moot if we don't... This really came into light with the Rails 8 upgrade which had a number of changes to the configuration files in particular that caused a number of our customizations to be skipped. By introducing bang versions of the methods that error if the file contents does not change, we can ensure going forward all manipulations actually work; this uses the same logic I introduced in #533 for `gsub_file`, and caught a bug that I fixed in #596
So it turns out that
gsub_file
does not actually check if it matched anything and so we have a few misc. changes silently not being applied due to changes in Rails 7.1.This addresses that by switching us to use
gsub_file!
which reads the file into memory before it's gsub'd and then compares the results to make sure it actually changed.I've opened rails/thor#874 to add this to Thor itself