2021/02/19分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
activestorage/CHANGELOG.md
Merge pull request #41475 from Yegorov/add-uncountable
activemodel/lib/active_model/naming.rbの修正です。
ActiveModel::Nameに、uncountableかどうかをチェックする為のuncountable?メソッドを追加しています。
Add send_stream to do for dynamic streams what send_data does for static files (#41488)
actionpack/lib/action_controller/metal/live.rbの修正です。
静的ファイルをstreamで送信する為のsend_streamメソッドを追加しています。
send_stream(filename: "subscribers.csv") do |stream| stream.write "email_address,updated_at\n" @subscribers.find_each do |subscriber| stream.write "#{subscriber.email_address},#{subscriber.updated_at}\n" end end
Add redirect_back directive to Rails 5.0 -> 5.1 upgrade guide
rails guideのUpgrading Ruby on Railsの修正です。
Upgrading from Rails 5.0 to Rails 5.1の項に、削除されたredirect_to :backについての説明を追加しています。
Allow new syntax for enum to avoid leading _ from reserved options
activerecord/lib/active_record/enum.rbの修正です。
enumで複数の引数を指定出来るよう修正しています。
enumは引数を1つしか指定出来ない都合上、reserved optionsに_を指定するようになっていました(e.g. _prefix、_scopes)。
この対応により上記問題が解決される為、新しいフォーマットのを使用した場合、reserved optionsに_を指定しないで良いようになっています。
# Before class Book < ActiveRecord::Base enum status: [ :proposed, :written ], _prefix: true, _scopes: false enum cover: [ :hard, :soft ], _suffix: true, _default: :hard end
# After class Book < ActiveRecord::Base enum :status, [ :proposed, :written ], prefix: true, scopes: false enum :cover, [ :hard, :soft ], suffix: true, default: :hard end
Call run after preloading records
activerecord/lib/active_record/associations/preloader.rb、
activerecord/lib/active_record/associations/preloader/association.rbの修正です。
already_loaded?のチェックが正しく動作してなかったのと、load_records_in_batchでrecordのpreloadが行われないバグがあったのを修正しています。
Extract ActiveStorage::Streaming so your own controllers can use it (#41440)
Active Storageの修正です。
blobをstorageからstreamする為のsend_blob_streamメソッドを追加しています。使用する場合、controllerでActiveStorage::Streaming moduleをincludeする必要があります。
class MyPublicBlobsController < ApplicationController include ActiveStorage::SetBlob, ActiveStorage::Streaming def show http_cache_forever(public: true) do send_blob_stream @blob, disposition: params[:disposition] end end end