なるようになるブログ

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

rails commit log流し読み(2015/11/26)

2015/11/26分のコミットです。

CHANGELOGへの追加はありませんでした。


Remove
from scaffold, in favor of using CSS

railties/lib/rails/generators/erb/scaffold/templates/_form.html.erbrailties/lib/rails/generators/rails/scaffold/templates/scaffold.cssの修正です。

scaffoldが生成する_form.html.erbで、labelメソッドの後に<br>タグで改行を行っていたのを、<br>タグではなく、css(display: block;)で改行するよう修正しています。


Docs: ActiveRecord::QueryMethods#joins

activerecord/lib/active_record/relation/query_methods.rbのdocの修正です。

ActiveRecord::QueryMethods#joinsのdocに、複数join、ネストしたjoinした場合のexampleを追加しています。


Add option to verify Origin header in CSRF checks

actionpack/lib/action_controller/metal/request_forgery_protection.rbactionpack/lib/action_dispatch/http/request.rbの修正です。

CSRFチェックを行う際、Originヘッダもチェックするよう修正しています。

# Returns true or false if a request is verified. Checks:
#
# * Is it a GET or HEAD request?  Gets should be safe and idempotent
# * Does the form_authenticity_token match the given token value from the params?
# * Does the X-CSRF-Token header match the form_authenticity_token
def verified_request?
  !protect_against_forgery? || request.get? || request.head? ||
    (valid_request_origin? && any_authenticity_token_valid?)
end

...

# Checks if the request originated from the same origin by looking at the
# Origin header.
def valid_request_origin?
  if forgery_protection_origin_check
    # We accept blank origin headers because some user agents don't send it.
    request.origin.nil? || request.origin == request.base_url
  else
    true
  end
end

チェックするかどうかは、Rails.application.config.action_controller.forgery_protection_origin_checkで設定出来るようになっています。デフォルトはfalse(新しくrails newした場合は、trueに設定するようのinitializersが生成されるので、trueになる)。 これのCHANGELOGへのエントリが無いのは記載漏れかな。


Add prepared statements support for Mysql2Adapter

Active Recordの修正です。

Mysql2Adapterで prepared statements を使用出来るよう対応しています。

が、一部テストがコケてしまった為、後ほどrevertされています。どうも、mysql2 gem自体にバグがあるようです(参考: stmt.execute cause Error: 2014 (CR_COMMANDS_OUT_OF_SYNC) · Issue #694 · brianmario/mysql2)


Only run listen tests in isolation, for now

activesupport/test/file_evented_update_checker_test.rbci/travis.rbの修正です。

isolationの場合のみlistenのテスト(FileEventedUpdateCheckerTest)を実行するよう修正しています。

listenを使用したテストにまだファイルが使用されているのにGCされてしまう、というバグがあるようで、それが原因で時折テストがコケてしまっており、それを避ける為対応したとの事です。

参考:Bug #11744: Open files being GC'ed while still in use - Ruby trunk - Ruby Issue Tracking System