なるようになるブログ

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

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

2016/11/22分のコミットです。

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

actionview/CHANGELOG.md

railties/CHANGELOG.md

activerecord/CHANGELOG.md


update bin/test scripts to prevent double runs.

コンポーネント配下のbin/testスクリプト、及びtools/test.rbの修正です。

bin/testスクリプトで直接Minitest.runを呼んでいたのをやめて、active_support/testing/autorunを使用してテストを実行するよう修正しています。test runner自体がautorunを呼ぶように変更されており、テスト実行用スクリプトMinitest.runを呼ぶとテストが2回実行されてしまう為。


Update RELEASING_RAILS.md

RELEASING_RAILS.mdの修正です。

リストの行末から不要なピリオドを削除しています。


Add form_with to unify form_tag/form_for. (#26976)

Action Viewの修正です。

form helperに、form_tag及びform_forを統一して使えるform_withメソッドを追加しています。

# form_tagのように使う場合
<%= form_with scope: :post, url: super_special_posts_path %>

# form_forのように使う場合
<%= form_with model: @post do |form| %>
  <%= form.text_field :title %>
<% end %>

form_tagform_forが似たようなインターフェースになっているので、別のメソッドではなく一つのメソッドで両方使えた方が良いよね、という事で追加されています。今の所はform_tag / form_forはdeprecateになっていないので、どちらも引き続き使用できます。因みにさらっとdata-remoteがデフォルトでtrueになっていたりします。

また、合わせて、form helperにfieldsメソッドを追加しています。

<%= fields :comment, model: @comment do |fields| %>
  <%= fields.text_field :title %>
<% end %>

fields_forと同様、form_with配下で異なるモデルを編集するのに使用出来ます(実際fieldsメソッド内部ではfields_forメソッドを呼び出しています)。


[ci skip] Mention form_with and fields in changelog.

先ほどのform_with及びfieldsの対応についてCHANGELOGにentryを追加しています。


deep symbolize keys on secrets.yml

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

secrets.ymlを読み込む際、symbolize_keysメソッドではなくdeep_symbolize_keysを使用するよう修正しています。これにより、全てのkeyをsymbolで扱えるようになっています。

development:
  smtp_settings:
    address: "smtp.mailgun.org"
    port: 587
    domain: "example.com"
    authentication: "plain"
    enable_starttls_auto: true
    user_name: "postmaster@mailgun.example.com"
    password: "12d3f673e0a83c97045eb4e2d10ebc8a4"
# before
{:smtp_settings=>{"address"=>"smtp.mailgun.org", "port"=>587, "domain"=>"example.com", "authentication"=>"plain", "enable_starttls_auto"=>true, "user_name"=>"postmaster@mailgun.example.com", "password"=>"12d3f673e0a83c97045eb4e2d10ebc8a4"}}
# after
{:smtp_settings=>{:address=>"smtp.mailgun.org", :port=>587, :domain=>"example.com", :authentication=>"plain", :enable_starttls_auto=>true, :user_name=>"postmaster@mailgun.example.com", :password=>"12d3f673e0a83c97045eb4e2d10ebc8a4"}}

form_helper typo fix [ci skip]

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

form_withメソッドのdoc内のタイポを修正しています。


Fix a wrong permission

guides/assets/stylesheets/responsive-tables.cssの修正です。

ファイルパーミッションが0755になっていたのを、0644に修正しています。


CI against 2.3.3

.travis.ymlの修正です。

CIで使用するRubyのバージョンを2.3.3に更新しています。


Introduce reload_<association> reader for singular associations.

activerecord/lib/active_record/associations/builder/singular_association.rbactiverecord/lib/active_record/associations/singular_association.rbの修正です。

singular associationをreloadする為のModel#reload_<association>メソッドを追加しています。

元々はsingular associationをreloadする為の方法として、association methodにtrueを渡すという方法がありました(e.g. Article.category(true))。ただこれはRails 5.0.0でdeprecatedになり、代わりにreloadメソッド(e.g. article.reload.category)使う事が推奨されていました。

ただ、Article.category(true)article.reload.categoryでは微妙に振る舞いが違う(親レコードもreloadするかどうかの違いがある)為、Model#reload_<association>メソッドを追加したとの事です。


Merge pull request #27113 from rails/remove-jquery

railtiesの修正です。

デフォルトのスタックからjquery-railsが削除され、代わりにrails-ujs: Ruby on Rails unobtrusive scripting adapter.をデフォルトのJSのadapterとして使用するよう修正しています。jQueryを削除する事になった背景についてはDrop jQuery as a dependencyを参照。

因みにデフォルトスタックから外されただけで、jquery-rails自体はまだ使えます。