なるようになるブログ

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

rails commit log流し読み(2016/11/02)

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_createafter_updateafter_save)の中でActiveRecord::Dirtyのメソッド(#previous_changes#changed?)等がdeprecateになりました。

after callbackの中でdirtyメソッドを呼んだ時の挙動がユーザが想定している挙動と異なる(Model.after_save { puts changed? }; model.savemodel.save; puts model.changed?と同じ挙動になる事を期待している事が多いようだが、実際は違う)為、deprecateにしたようです。

今後は、dirtyとは別に、明示的に変更したattributesや、DBに保存されている値を取得するようのAPIが準備されるので、そちらを使う必要があります。追加されたAPIについてはまだ名前が変わりそうな感じらしいです。


Allow autosave: true to be used with inverse of

Active Recordの修正です。

inverse_ofautosaveが一緒に動作するよう修正しています。

元々は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.ttrailties/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内部でだけ使用するメソッドの為。


remove warning from railtie

railties/lib/rails/railtie.rbの修正です。

Rails::Railtie.register_block_forメソッドでrubyのwarning(warning: instance variable @rake_tasks not initialized)が出ていたので、instance_variable_defined?で変数が定義済みかどうか確認するよう修正しています。


Use tr instead of gsub

railties/lib/rails/generators/rails/plugin/plugin_generator.rbの修正です。

正規表現を使用しない文字列の置換処理にString#gsubを使用していたのを、String#trを使用するよう修正しています。