なるようになるブログ

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

rails commit log流し読み(2017/02/08)

2017/02/08分のコミットです。

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

activemodel/CHANGELOG.md

activerecord/CHANGELOG.md

activesupport/CHANGELOG.md


Remove deprecated behavior that halts callbacks when the return is false

deprecateになっていた、callback内でfalseを返すとcallback chainが止まる、という振る舞いを削除しています。


Deprecate halt_and_display_warning_on_return_false

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

.halt_and_display_warning_on_return_falseメソッドがdeprecateになっています。

halt_and_display_warning_on_return_falseはcallback内でfalseを返した場合にcallback chainを止める、という過去の挙動を維持するかどうかを指定する為のメソッドでしたが、先のコミットでそもそもその挙動が削除された為、deprecateになりました。

が、そもそもhalt_callback_chains_on_return_falseメソッドはprivate APIで、ユーザにはhalt_callback_chains_on_return_falseメソッドを使用するよう促していた為、halt_callback_chains_on_return_falseメソッドを使用した際にdeprecateメッセージが表示されるよう修正しています。


Deprecate locking of dirty records

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

dirty record(保存されてないデータを保持しているrecord)に対するlock処理がdeprecateになりました。

u = User.first
u.email = "dummy@exmaple.com"
u.lock!
# => DEPRECATION WARNING: Locking a record with unpersisted changes is deprecated and will raise an exception in Rails 5.2. Use `save` to persist the changes, or `reload` to discard them explicitly. (called from irb_binding at (irb):16)

元々lock!メソッドではlockをとるのにreloadメソッドを呼び出すようになっており、保存されてないデータは破棄されるようになってしました。ただ、されだとデータが破棄された、という事実がわからなかった為、そもそもdirty recordに対するlock処理はdeprecateとするようにしたとの事です。


Automatically inject the current Rails version in API links [ci skip]

guides/rails_guides/markdown/renderer.rbの修正です。

rails guideからAPI doc(http://api.rubyonrails.org/)にリンクを貼る際に、自動でRailsのバージョンを入れるよう修正しています。Rails 4.2.6のGuideからはRails 4.2.6のAPI doc(http://api.rubyonrails.org/v4.2.6/)にリンクが貼られるようになっています。おそらく。


Remove unused code now that the deprecated file was removed

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

不要なファイル除外処理を削除しています。


Automatically link to Ruby files referenced in notes [ci skip]

guides/rails_guides/markdown/renderer.rbの修正です。

rails guideのnoteでRubyのファイルを参照している箇所に、自動でGitHubの該当ファイルへのリンクを作成するよう修正しています。


Merge pull request #27938 from y-yagi/remove_link_to_edgeapi

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

ActionDispatch::SSL classのdocのリンクがedgeapi.rubyonrails.orgへのリンクになっていたのを、api.rubyonrails.orgへのリンクに修正しています。


deprecate halt_callback_chains_on_return_false instead of halt_and_display_warning_on_return_false

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

halt_and_display_warning_on_return_falseメソッドではなくhalt_callback_chains_on_return_falseメソッドを使用した際にdeprecateメッセージを表示するよう修正しています。

理由は先に書いたとおり、halt_and_display_warning_on_return_falseメソッドはprivate APIで、ユーザが通常使用するメソッドでは無いため。


remove ActiveSupport.halt_callback_chains_on_return_false from everywhere

deprecateになったhalt_callback_chains_on_return_falseを使用している箇所をまとめて削除しています。