2018/04/24分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
activestorage/CHANGELOG.md
Merge pull request #31881 from yewton/rails-ujs-with-yarn-autoclean
actionview/app/assets/javascripts/README.md
の修正です。
yarn autoclean
コマンドを実行した後に、.yarnclean
にassets
ディレクトリを含まないよう注記を追加しています。
Remove key from session by using session.delete (#31685)
rails guideのAction Controller Overview
の修正です。
Accessing the Session
の項にある、ログアウト処理のexampleコードで、session
からuser idを削除してなかった(nilを入れいただけ)のを、明示的にuser idを削除するようコードを修正しています。
Merge pull request #32703 from janko-m/halve-memory-allocation-in-s3-download
activestorage/lib/active_storage/service/s3_service.rb
の修正です。
S3Service#download
メソッドでbodyを取得するのにread
メソッドを使用していたのを、string
メソッド使用するよう修正しています。
- object_for(key).get.body.read.force_encoding(Encoding::BINARY) + object_for(key).get.body.string.force_encoding(Encoding::BINARY)
Aws::S3::Object#get
はStringIO
オブジェクトを返す、かつ、StringIO#read
は値をコピーした新しいオブジェクトを返します。そのため、不要なオブジェクトの生成を避けるよう、値をそのまま取得出来るstring
メソッドを使用するようにしています。
Save a hash allocation in MySQL statement pool
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
、
activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb
の修正です。
statement poolを保持する際に、明示的にHashを生成していたのを、生成しないよう修正しています。古いMySQL adapterの為のコードだったとのことです。
Merge pull request #32471 from janko-m/use-image_processing-gem
Active Storageの修正です。
ファイルの変換処理にImageMagick
(mini_magick
gem)を直接使用していたのを、image_processing gemを使用するよ修正しています。
image_processing
はGraphicsMagickもサポートしているので、ファイルの変換処理にlibvips(ruby-vips
gem)も使用出来るようになります。vipsを使用したい場合は、config.active_storage.variant_processor
にvips
を指定すればOKです。
この対応により、mini_magick
gemを直接使用するのはdepecateになりました。合わせて、変換処理でImageMagickのオペレーションを直接指定していたのを、image_processingが提供するメソッド(resize_to_fit
、resize_to_fill
等々)を使用する必要があります。
ちなみにimage_processing
gemの作者はshrine: File Attachment toolkit for Ruby applicationsの作者のjanko-m氏。
Flush tempfile after populating it
activestorage/lib/active_storage/downloading.rb
の修正です。
Downloading#download_blob_to
メソッドでblobデータをファイルに書き込んだ後、バッファを出力する為にflush
メソッドを呼び出すよう修正しています。
Use strict_encode64 instead of gsub newline for ScreenshotHelper
actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb
の修正です。
ScreenshotHelper#inline_base64
メソッドでpathをencode64
メソッドでBase64でエンコードした後に改行コードを削除してたのを、strict_encode64
メソッドを使ってそもそも改行コードが含まれないようにしています。
columns
is cached in the statement
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
の修正です。
columnsをクラス内でHashにキャッシュしていたのですが、そもそもStatement classでcolumnsをキャッシュしていたので、そちらを使用するよう修正しています。