2016/11/02分のコミットです。
CHANGELOGへの追加はありませんでした。
Added register_block method to register rake_tasks, generators, console & runner blocks
railties/lib/rails/railtie.rbの修正です。
rake, console, runner, generatorへのhookの登録処理をメソッド(register_block_for)に切り出しています。
Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks
Active Recordの修正です。
after callbacks(after_create、after_update、after_save)の中でActiveRecord::Dirtyのメソッド(#previous_changes、#changed?)等がdeprecateになりました。
after callbackの中でdirtyメソッドを呼んだ時の挙動がユーザが想定している挙動と異なる(Model.after_save { puts changed? }; model.saveがmodel.save; puts model.changed?と同じ挙動になる事を期待している事が多いようだが、実際は違う)為、deprecateにしたようです。
今後は、dirtyとは別に、明示的に変更したattributesや、DBに保存されている値を取得するようのAPIが準備されるので、そちらを使う必要があります。追加されたAPIについてはまだ名前が変わりそうな感じらしいです。
Allow autosave: true to be used with inverse of
Active Recordの修正です。
inverse_ofとautosaveが一緒に動作するよう修正しています。
元々は2重保存バグの可能性があった為動作しないようになっていたのですが、先のcallbackの対応の影響で、2重保存のバグはほぼ出なくなった為、動作するようにしたとの事です。
Merge pull request #26453 from kamipo/remove_unused_internal_dependent_option
activerecord/lib/active_record/associations/collection_association.rbの出力です。
ActiveRecord::CollectionAssociation#deleteメソッドから、使用していないdependent変数を削除しています。
Merge pull request #26451 from kamipo/remove_target_uniq_size
activerecord/lib/active_record/associations/collection_association.rbの修正です。
ActiveRecord::CollectionAssociation#sizeメソッドから、不要なtarget.uniq.sizeの呼び出しを削除しています。
if !find_target? || loaded? - if association_scope.distinct_value - target.uniq.size - else - target.size - end + target.size
association_scope.distinct_valueが設定されている場合、同じrecordがtargetにいる事は無い(#add_to_targetする時点で上書きされている)為。
Don't put db:migrate and db:setup in binfiles if activerecord is excluded
railties/lib/rails/generators/rails/app/templates/bin/setup.tt、
railties/lib/rails/generators/rails/app/templates/bin/update.ttの修正です。
--skip-active-recordオプションを指定した場合、setup及びupdateスクリプトで、db:setup及びdb:migrateを実行しないよう修正しています。
Make register_block_for private
Added register_block method to register rake_tasks, generators, console & runner blocksで追加されたregister_block_forメソッドをpricateメソッドに変更しています。Rails内部でだけ使用するメソッドの為。
railties/lib/rails/railtie.rbの修正です。
Rails::Railtie.register_block_forメソッドでrubyのwarning(warning: instance variable @rake_tasks not initialized)が出ていたので、instance_variable_defined?で変数が定義済みかどうか確認するよう修正しています。
railties/lib/rails/generators/rails/plugin/plugin_generator.rbの修正です。
正規表現を使用しない文字列の置換処理にString#gsubを使用していたのを、String#trを使用するよう修正しています。