diff options
author | yuuji.yaginuma <yuuji.yaginuma@gmail.com> | 2017-07-08 18:53:32 +0900 |
---|---|---|
committer | yuuji.yaginuma <yuuji.yaginuma@gmail.com> | 2017-07-09 09:25:45 +0900 |
commit | be4ebc47807948ed8d40c04d0a134f7de1ec0fc2 (patch) | |
tree | d094622886a67948d14d2224dcfdf47987b32474 /railties/lib/rails | |
parent | 650ea5e5cf50d8a7242499463cf1762922d330a8 (diff) | |
download | rails-be4ebc47807948ed8d40c04d0a134f7de1ec0fc2.tar.gz rails-be4ebc47807948ed8d40c04d0a134f7de1ec0fc2.tar.bz2 rails-be4ebc47807948ed8d40c04d0a134f7de1ec0fc2.zip |
Treat secrets as binary
Until Rails 5.1.1 secrets was treated as binary inside Rails.
https://github.com/rails/rails/blob/v5.1.1/railties/lib/rails/secrets.rb#L59
https://github.com/rails/rails/blob/v5.1.1/railties/lib/rails/secrets.rb#L63
However, it is treated as String in Rails 5.1.2(changed by 157db872103429e8782b62d1cb5d1d91337177a7).
https://github.com/rails/rails/blob/v5.1.2/railties/lib/rails/secrets.rb#L104
https://github.com/rails/rails/blob/v5.1.2/railties/lib/rails/secrets.rb#L108
As a result, when upgrading from Rails 5.1.1 to 5.1.2, to write the value
treated as binary using `File.write`, causing an error.
In order to avoid `UndefinedConversionError`, fixed it to treat it as
binary like 5.1.1.
Fixes #29696
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/secrets.rb | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/railties/lib/rails/secrets.rb b/railties/lib/rails/secrets.rb index 955ab096e8..46e21185d7 100644 --- a/railties/lib/rails/secrets.rb +++ b/railties/lib/rails/secrets.rb @@ -101,11 +101,11 @@ module Rails def writing(contents) tmp_path = File.join(Dir.tmpdir, File.basename(path)) - File.write(tmp_path, contents) + IO.binwrite(tmp_path, contents) yield tmp_path - updated_contents = File.read(tmp_path) + updated_contents = IO.binread(tmp_path) write(updated_contents) if updated_contents != contents ensure |