なるようになるブログ

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

rails commit log流し読み(2017/04/27)

2017/04/27分のコミットです。

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

railties/CHANGELOG.md


s/broadcasing/broadcasting/

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

broadcastingbroadcasingにタイポしていたのを修正しています。


Lock connection before checking it in

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

database connectionをpoolにcheck-inする際に、ロックをかけるよう修正しています。


Revert “Merge pull request #27636 from mtsmfm/disable-referential-integrity-without-superuser-privilege-take-2”

fixturesのインサート処理等のように、一時的に外部キー制約を無効にしたい場合、PostgreSQLではDISABLE TRIGGER ALLを使用するようになっていたのを、SET CONSTRAINTS ALL DEFERREDが使用出来る場合(9.4.2以上)の場合、そちらを使用するよう修正した、Merge pull request #27636 from mtsmfm/disable-referential-integrity-without-superuser-privilege-take-2をrevertしています。

“SET CONSTRAINTS ALL DEFERRED"で遅延させる事が出来るのは"NO ACTION”(デフォルト)のみで、それ以外の検査(“RESTRICT"等)は遅延させる事が出来ず、外部キー制約違反でエラーになってしまう為、との事です。

参考:CREATE TABLEデータベース PostgreSQL 制約 - s-kitaの日記


Some improvements in the 5.1 release notes [ci skip]

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

各項のフォーマット、グラマーの修正等をまとめて行っています。


Add some items to the release notes [ci skip]

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

コンポーネントの項にエントリーを追加しています。


More release notes for Rails 5.1 [ci skip]

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

コンポーネントの項にエントリーを追加しています。


Pluralize methods

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

assert_changes及びassert_no_changesを追加した対応のエントリーのグラマーの修正を行っています。


Do not try to encoding the parameters when the controller is not defined

actionpack/lib/action_dispatch/http/parameters.rbの修正です。

controllerクラスが存在しないページを表示しようとした場合に、development環境で、エラーページではなく500エラーが表示されてしまうバグがあったのを修正しています。

parametersのencodingを取得する際にcontrollerクラスが存在しない事を考慮して無かったのが問題だった為、controller classが存在しない(NameError)が発生した場合の処理を追加し対応しています。


Merge pull request #28891 from sodabrew/patch-1

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

databse configファイルにusernameが指定されてなかった場合に、デフォルトでusernameにrootを設定する、という処理があったのを削除しています。昔のコードがそのまま残ってしまっていた感。


Merge pull request #28847 from Edouard-chin/current-page-checkquery-string

actionview/lib/action_view/helpers/url_helper.rbの修正です。

current_page?メソッドの引数にActive Recordのオブジェクトを渡した場合にArgumentErrorが発生してしまうバグがあったのを修正しています。

-        check_parameters ||= !options.is_a?(String) && options.try(:delete, :check_parameters)
+        check_parameters ||= options.is_a?(Hash) && options.delete(:check_parameters)

元の処理ではcurrent_page?の第一引数のoptionsがStringで無かった場合、deleteメソッドを呼び出すようになっていました。が、optionsにARのオブジェクトを渡した場合、ARのdeleteメソッドが呼ばれしまい、エラーになってしまっていた為、optionsHashの場合のみcheck_parametersの取得を行うよう修正しています。


Merge pull request #28885 from kamipo/remove_useless_test_case

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

association に対してprivateメソッドが呼べる事を確認するテストを削除しています。現状privateメソッドは呼べない(public_methodを使っているので)ので、削除したとの事です。


Merge pull request #28244 from ixti/improve/action-mailer-preview-params

Action Mailer及びrailtiesの修正です。

ActionMailer::Previewにrequest parameterを渡せるように修正しています。

http://localhost:3000/rails/mailers/user_mailer/password_recovery?email=alice@foobar.comのように普通にget parameterに指定可能で、previewクラスの中ではparamsで参照可能になっています。


Merge pull request #28881 from bogdanvlviv/verbose-migration

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

ENV["VERBOSE"]false以外の文字列を指定した場合に、全てtrueとして扱うよう修正しています。

-        verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
+        verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] != "false" : true

rails guide(http://edgeguides.rubyonrails.org/active_record_migrations.html)にfalseを指定した場合のみ出力を抑圧する、という説明があり、そこの説明に合わせた形との事です。


Added a shared section to config/database.yml that will be loaded for all environments

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

database.ymlに全ての環境で使用されるsharedセクションを追加しています。

shared:
  username: bobby
  adapter: sqlite3

development:
  database: 'dev_db'

Added a shared section to config/secrets.yml that will be loaded for all environmentsdatabase.yml版。


Merge pull request #28848 from Edouard-chin/ec-remove-unused-method

actionview/test/template/url_helper_test.rbの修正です。

使用されていないsort_query_string_paramsメソッドを削除しています。


Merge pull request #28883 from yahonda/fix28797

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

CURRENT_DATECURRENT_TIMESTAMPという文字もdefault functionとみなすよう修正しています。

        def has_default_function?(default_value, default)
-          !default_value && (%r{\w+\(.*\)|\(.*\)::\w+} === default)
+          !default_value && %r{\w+\(.*\)|\(.*\)::\w+|CURRENT_DATE|CURRENT_TIMESTAMP}.match?(default)
         end

PostgreSQL 9まではCURRENT_DATE('now'::text)::dateに、CURRENT_TIMESTAMPnow()に変換されていたのですが、PostgreSQL 10ではそのままCURRENT_DATECURRENT_TIMESTAMPとして扱われるようになった為、対応追加したとの事です。

参考:Re: Keeping CURRENT_DATE and similar constructs in original format


Restore fixtures :author_addresses

Active Recordのテストの修正です。

Revert “Merge pull request #27636 from mtsmfm/disable-referential-integrity-without-superuser-privilege-take-2”の対応の際に、必要なfixtureのloadもrevertしてしまっていた為、fixtureのload処理だけ戻しています。


Update the JavaScript guide to use form_with

rails guideのWorking with JavaScript in Railsの修正です。

form_for / form_tag について説明していた箇所を、form_withについて説明するよう修正しています。


Add a section with the different Ajax events [ci skip]

rails guideのWorking with JavaScript in Railsの修正です。

Dealing with Ajax eventsの項を追加し、

railsAjax処理で発火されるイベントについての説明、及び、イベントを停止したい場合の対応方法についての説明を追加しています。


Nest Action View remote helpers one level deeper [ci skip]

rails guideのWorking with JavaScript in Railsの修正です。

Built-in Helpersの項にRemote elementsセクションを追加し、form_withlink_to等の説明はRemote elementsセクション配下で説明を行うよう修正しています。