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
を使用するよう修正しています。