なるようになるブログ

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

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

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

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

activerecord/CHANGELOG.md

actionpack/CHANGELOG.md


Revert "Merge pull request #31006 from rails/kamipo/ordinal_methods_should_respect_loaded_records"

Active Recordのordinal methods(firstsecond等)でrecordsがロード済みの場合ロード済みのrecordsを使用するよう修正した、Merge pull request #31006 from rails/kamipo/ordinal_methods_should_respect_loaded_records をrevertしています。

昨日も書いたとおり、別のPRで進めている対応と内容が矛盾している為、というで理由でrevertされています。


Merge pull request #31229 from y-yagi/remove_field_ids_from_scaffold_form

railties/lib/rails/generators/erb/scaffold/templates/_form.html.erb.ttrailties/lib/rails/generators/named_base.rbの修正です。

scaffoldで生成される_form.html.erbid属性が付与されていたのを削除しています。

labelinputをリンクする為に付与していたのですが、Merge pull request #29439 from npezza93/set-skip-default-idsform_withもデフォルトでid属性を生成するようになり、viewに明示的にid属性を付与する必要は無くなった為削除しています。


Rename TransactionTimeout to more descriptive LockWaitTimeout (#31223)

Active Recordの修正です。

ロック待機のタイムアウトの期限が切れた場合に使用する為のTransactionTimeoutLockWaitTimeoutにリネームしています。TransactionTimeoutは汎用的な名前過ぎてエラーの内容がわかりずらく、LockWaitTimeout`の方がより適切な名前だろう、という事で変更されたようでう。


Add new error class QueryCanceled which will be raised when canceling statement due to user request (#31235)

Active Recordの修正です。

ユーザのリクエストによりqueryがキャンセルされた時に使用する為のQueryCanceledクラスを追加しています。


Merge pull request #31167 from albertoalmagro/clean-db-ambiguity

railties/lib/rails/tasks/engine.rakeの修正です。

taskのdescpiton内のDBrailties/lib/rails/tasks/engine.rakeに修正しています。


Use Puma 3.11 in newly generated applications

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

rails newで生成するGemfileで使用するPumaのバージョンを3.11以上に修正しています。

early hintsを使用するにはPuma 3.11以上が必要な為。

参考:3.11 (Amber is the color of it's energy)


Add DSL for configuring Content-Security-Policy header

Action Packの修正です。

Content-Security-Policy headerを設定出来るよう対応しています。

設定はアプリ全体(initializersで実施)、及び、controller単位で出来るようになっています。

# config/initializers/content_security_policy.rb
Rails.application.config.content_security_policy do |p|
  p.default_src :self, :https
  p.font_src    :self, :https, :data
  p.img_src     :self, :https, :data
  p.object_src  :none
  p.script_src  :self, :https
  p.style_src   :self, :https, :unsafe_inline

  # Specify URI for violation reports
  # p.report_uri "/csp-violation-report-endpoint"
end
class PostsController < ApplicationController
  content_security_policy do |p|
    p.upgrade_insecure_requests true
    p.base_uri :self, -> { "https://#{current_user.domain}.example.com" }
  end
end

また、config.content_security_policy_report_onlyにtrueを指定するとレポートだけを行う(ブロックはしない)モードになります(Content-Security-Policy-Report-OnlyがHTTPヘッダーに指定される)。 content_security_policy_report_onlyはcontroller単位でも指定可能になっています。

参考:Content Security Policy (CSP) - Web セキュリティ | MDN


Enable Style/DefWithParentheses rubocop rule

.rubocop.ymlStyle/DefWithParentheses copを追加、及び各ファイルにルールを適用しています。


Add CHANGELOG.md entry for #31162 [ci skip]

actionpack/CHANGELOG.mdの修正です。

先のコミットで追加されたContent-Security-Policy headerの対応についてエントリーを追加しています。


Fix CHANGELOG for CSP PR #31162 [ci skip]

actionpack/CHANGELOG.mdの修正です。

Content-Security-Policy headerの対応についてのエントリーのexampleコードでタイポしている箇所があったのを修正しています。


Merge pull request #31238 from prathamesh-sonpatki/csp-initializer-test

railties/test/generators/app_generator_test.rbの修正です。

デフォルトで生成されるファイルを確認するテストで、config/initializers/content_security_policy.rbが生成される事を確認するよう修正しています。


Update the middleware list with CSP [ci skip]

rails guideのRails on Rackの修正です。

Inspecting Middleware Stackの項、bin/rails middlewareの実行結果の一覧にActionDispatch::ContentSecurityPolicy::Middlewareを追加しています。


Remove Content-Security-Policy initializer in API-only Applications

railties/lib/rails/generators/rails/app/app_generator.rbの修正です。

Content-Security-Policy header用のinitializerをAPI-only Applicationでは削除するよう修正しています。APIではContent-Security-Policyを指定する必要は無い為。