なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2018/01/06)

2018/01/06分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activestorage/CHANGELOG.md


Force content disposition to attachment for specific content types

Active Storageの修正です。

service_urlメソッドのdispositionオプションのデフォルトが:inlineになっていたのを、inlineで表示すべきではないファイル(text/htmlapplication/x-shockwave-flash等々)は:attachmentとして扱うよう修正しています。

htmlやjavascriptはinlineで表示してしまうと、XSSが実行されてしまう可能性がある為。デフォルトを:attachmentとして扱いたいcontent typeはconfig.active_storage.content_types_to_serve_as_binaryで指定可能になっています。

rails commit log流し読み(2018/01/05)

2018/01/05分のコミットです。

CHANGELOGへの追加はありませんでした。


Partial revert the changing default value of readonly_value

activerecord/lib/active_record/relation/query_methods.rbの修正です。

ActiveRecord::Relationに設定及び取得を行う為のメソッド(#set_value、#get_value)を追加した、Remove over meta programming in AR::Relationの対応でWhereChainクラスのDEFAULT_VALUESも変更していたのを元に戻しています。default valueを変更する必要はなかった為。


Move the options for deliver_later up near to the example [ci skip]

actionmailer/lib/action_mailer/message_delivery.rbのdocの修正です。

deliver_later!及びdeliver_laterメソッドのdocでメソッドのオプションについての説明を、exampleの後に移動しています。


Remove passing argument to singular and collection association readers

activerecord/lib/active_record/associations/builder/association.rbの修正です。

association reader用メソッドから使用していない引数を削除しています。


Add missing require for strip_heredoc

actionpack/lib/action_controller/metal/request_forgery_protection.rbの修正です。

不足していたactive_support/core_ext/string/stripのrequireを削除しています。


Consolidate queue_adapter= and interpret_adapter

activejob/lib/active_job/queue_adapter.rbの修正です。

Provides friendlier way to access queue adapters of a job.以降、`ActiveJob::QueueAdapter#queue_adapter=メソッドがinterpret_adapterメソッドを呼び出すだけになってしまっていたので、interpret_adapterメソッドを削除し、queue_adapter=メソッドの方で処理を定義するよう修正しています。

rails commit log流し読み(2018/01/04)

2018/01/04分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activesupport/CHANGELOG.md


Move config.action_view.cache_template_loading to proper section in configuring.md [ci skip]

rails guideのConfiguring Rails Applicationsの修正です。

config.action_view.cache_template_loadingについての説明がRails General Configurationの項に定義されていたのを、Configuring Action Viewの項に移動しています。


Correctly handle infinity value in PostgreSQL range type

activerecord/lib/active_record/connection_adapters/postgresql/oid/range.rbactiverecord/lib/active_record/connection_adapters/postgresql/quoting.rbの修正です。

PostgreSQLのRange typにFloat::INFINITYを指定した場合にエラーになってしまうバグがあったのを修正しています。


Configure previewer/analyzer command paths centrally

Active Storageの修正です。

各クラスで保持していたコマンド(ffprobeffmpegmutool)のパスをActiveStorage moduleでまとめて保持するよう修正しています。

他のconfig(previewersanalyzers)と合わせる為、のようです。


Deprecate valid_alter_table_type? in sqlite3 adapter

activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rbの修正です。

sqlite3 adapterのvalid_alter_table_type?メソッドをdeprecatにしています。

元々内部でだけ使用する想定のメソッドだったのですが、誤ってpublic APIになてしまっていたので、まずはdeprecateするようにしています。


Merge pull request #31594 from yuki24/refactor-request-test

actionpack/test/dispatch/request_test.rbの修正です。

requestのtestで結果を検証するのにモックを使用していたのを、実際にqueryやpath_infoをrequestに指定して検証を行うよう修正しています。


Fix newly added reflection order when redefining association

activerecord/lib/active_record/reflection.rbの修正です。

associationを再定義した際に、reflection orderも再定義するよう修正しています。

reflectionも再定義をしないと、順序がずれてしまいエラーになってしまう事がある為。


Merge pull request #31011 from danielma/dma/assert-changes-with-to-should-still-assert-change

activesupport/lib/active_support/testing/assertions.rbの修正です。

assert_changesメソッドが、expressionオプションの値を評価後、tofromオプションの値に関わらず必ずassertを実行するよう修正しています。


Merge pull request #31049 from gwincr11/cg-blank

activesupport/lib/active_support/core_ext/object/blank.rbの修正です。

String#blank?メソッドをUTF-8以外のエンコードのStringで呼び出すとエラーになっていたのを、エラーにならないよう修正しています。

# before
" ".encode("UTF-16LE").blank?
#=> Encoding::CompatibilityError (incompatible encoding regexp match (US-ASCII regexp with UTF-16LE string))


# after
" ".encode("UTF-16LE").blank?
#=> true

rails commit log流し読み(2018/01/03)

2018/01/03分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activerecord/CHANGELOG.md


Merge pull request #29018 from willbryant/missing_attributes_after_save

activemodel/lib/active_model/attribute.rbの修正です。

save / save!メソッド実行後、元々assignされていたattributesの情報が失われてしまっていたのを、元の情報を保持するよう修正しています。


Merge pull request #27561 from fishbrain/count-all-in-has-many-association

activerecord/lib/active_record/associations/has_many_association.rbの修正です。

associationに対してcount + selectで任意のカラムを指定したときに、不正なSQLが生成されてしまうバグがあったのを修正しています。


Remove undefined track_deletion callback [ci skip]

activesupport/lib/active_support/core_ext/module/concerning.rbのdocの修正です。

Module::Concerning moduleのdoc内のexampleコードから、存在しないtrack_deletionメソッドを呼び出している箇所を削除しています。


Merge pull request #25456 from ojab/master

activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rbactiverecord/test/cases/connection_pool_test.rbの修正です。

ConnectionHandler#retrieve_connectionメソッドでpool.connectionの戻り値をチェックし、nilだったらConnectionNotEstablishedをraiseする、というコードがあったのを削除しています。

connectionが取得出来なかった場合はconnectionメソッド内でConnectionNotEstablishedをraiseするようになっていて、nilをreturnする事は無い為。


Merge pull request #31331 from dinahshi/postgresql_bulk_update

activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rbactiverecord/lib/active_record/connection_adapters/postgresql_adapter.rbの修正です。

PostgreSQL adapterにbulk alterのサポートを追加しています。

これにより、PostgreSQLでもchange_tablebulk: trueオプションを指定した場合、一つのALTER TABLEでSQLが実行されるようになっています。


Exclude ActiveStorage::SetBlob from API docs [ci skip]

activestorage/app/controllers/concerns/active_storage/set_blob.rbのdocの修正です。

内部でだけ使用するActiveStorage::SetBlob moduleに:nodoc:を指定しています。

rails commit log流し読み(2018/01/02)

2018/01/02分のコミットです。

CHANGELOGへの追加はありませんでした。


Improve preventDefault fix for rails-ujs

actionview/app/assets/javascripts/rails-ujs/utils/event.coffeeの修正です。

追加したpreventDefaultを呼び出す前に、nativeに定義されているpreventDefaultを呼び出すよう修正、及び、preventDefaultが複数回実行されていた事によりエラーになっていたのを、一度だけ呼び出されるよう修正しています。


Revert unintentional change in 41e3bbd

actionview/app/assets/javascripts/rails-ujs/utils/event.coffeeの修正です。

先のコミットで誤った修正をしてしまった(CustomEventwindowに定義してしまった)箇所があったのを修正しています。


Avoid Minitest 5.11.0 for now

GemfileGemfile.lockの修正です。

Minitest 5.11.0を使用しないようバージョンロックを追加しています。

Minitest 5.11.0で内部実装が色々と変わり、Railsのテストが通らなくなってしまった為。


Restore support for the -layers transformation

activestorage/app/models/active_storage/variation.rbの修正です。

Add support for combined MiniMagick transformationsの対応の影響で-layersオプションを指定した変換が動作しなくなっていたのを、再度動作するよう修正しています。

rails commit log流し読み(2018/01/01)

2018/01/01分のコミットです。

CHANGELOGへの追加はありませんでした。


Append extension to tempfile name

activestorage/lib/active_storage/downloading.rbの修正です。

Active Storageでアップロードされたファイルを保存する為の一時ファイルを作成する際に、ファイル名に元のファイルと同じ拡張子を指定するよう修正しています。

ImageMagickがファイルの変換処理を行う際、中身からtypeが判別できない際に拡張子からtypeを判別する事があり、ファイル名からもtypeを推測出来るようにする為、との事。


Merge pull request #31310 from kinnrot/duration-modulo

activesupport/lib/active_support/duration.rbの修正です。

partsを指定せずにActiveSupport::Durationのオブジェクトを生成した際に、secondsのデフォルトを0として扱うよう修正しています。


Merge pull request #31575 from bogdan/bugfix-has-many-reattachment

activerecord/lib/active_record/associations/belongs_to_association.rbactiverecord/lib/active_record/associations/belongs_to_polymorphic_association.rbの修正です。

inverse associationを使用している場合に、associationを一度指定後に、再度別の新規に作成したオブジェクトを指定した場合に、foreign_keyに先に指定した値が保持されたままになっていたのを、新しいassociationの値で置き換えるよう修正しています。


Suppress noise from drawing command invocations

activestorage/lib/active_storage/previewer.rbの修正です。

ActiveStorage::Previewer#captureメソッドでコマンド実行時にstderrを破棄(出力先にFile::NULL)するよう修正しています。


Expose ActiveStorage::Previewer#logger in API docs [ci skip]

activestorage/lib/active_storage/previewer.rbのdocの修正です。

ActiveStorage::Previewer#loggerメソッドをpublic API(:doc:を指定)にしています。

独自のpreview機能を作成する際にloggerメソッドは使用するだろう、との事でpublicにしています。


Expose ActiveStorage::Analyzer#logger in API docs [ci skip]

activestorage/lib/active_storage/analyzer.rbのdocの修正です。

ActiveStorage::Analyzer#loggerメソッドをpublic API(:doc:を指定)にしています。

独自のanalyzerを作成する際にloggerメソッドは使用するだろう、との事でpublicにしています。


Refactor delegating join_primary_key instead of join_keys and association_primary_key in TableMetadata

Active Recordの修正です。

ActiveRecord::TableMetadataクラスでassociation_primary_keyメソッド及びjoin_keysメソッドをrelationにdelegateしていたのをやめて、代わりにjoin_primary_keyメソッドをdelegateするよう修正しています。

join_primary_keyjoin_keysから呼ばれて、association_primary_keyを呼び出すことを抽象化するためのメソッドの為。


Added Railties deprecations in 5.2 release notes [ci skip]

rails guideのRuby on Rails 5.2 Release Notesの修正です。

Railtiesの項にDeprecationsになった機能への説明及びPRへのリンクを追加しています。


Remove association_primary_key_type from AssociationReflection and ThroughReflection

activerecord/lib/active_record/associations/collection_association.rbactiverecord/lib/active_record/reflection.rbの修正です。

AssociationReflection及びThroughReflectionクラスから不要なassociation_primary_key_typeメソッドを削除しています。


Add test case for collection_singular_ids with symbol primary keys

activerecord/test/cases/associations/has_many_through_associations_test.rbの修正です。

primary keyにSymbolを指定した場合にcollection_singular_idsが正しい値を取得出来る事を確認するテストを追加しています。


Refactor to Array(options[:on]) only once in defining validations

activemodel/lib/active_model/validations.rbactivemodel/lib/active_model/validations/callbacks.rbの修正です。

validationsを定義する際に、options[:on]のArrayへの変換が一度だけ行われるようリファクタリングしています。


Active Record: Bump license years for 2018 [ci skip]

activerecord/lib/active_record.rbのdocの修正です。

Copyrightを2017から2018に更新しています。

rails commit log流し読み(2017/12/31)

2017/12/31分のコミットです。

CHANGELOGへの追加はありませんでした。


Clarify that config.eager_load controls eager loading [ci skip]

rails guideのGetting Started with Engines、及び、railtiesのdocの修正です。

eager loadingについて説明している箇所で古いconfig(config.cache_classes)を参照している箇所があったのをconfig.eager_loadに修正しています。


Bump license years for 2018

各ファイルのlicense yearsを2018に更新しています。


Fix recreating partial indexes after alter table for sqlite

activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rbの修正です。

SQLite adapterでmigration実行時に、alter tableの後にpartial indexesの再作成が行われないバグがあったのを修正しています。