なるようになるブログ

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

rails commit log流し読み(2018/04/18)

2018/04/18分のコミットです。

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

actionpack/CHANGELOG.md


Correct docs on naming of sprockets manifest file

rails guideのThe Asset Pipelineの修正です。

Precompiling Assetsの項、Sprocketsのmanifestファイルについて説明している箇所で、ファイル名にmd5 hashが付与されている旨説明が記載されていたのですが、実際は16-byteのランダムな16進数な文字列が付与されるようになっているので、その旨説明を修正しています。


Ruby 2.6 warning: passing splat keyword arguments as a single Hash

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

Ruby 2.6からHash オブジェクトをキーワード引数への展開として呼び出すとwarningが出るようになったので、splat展開で引数を渡さないよう修正しています。


Update validates_inclusion_of example

activemodel/lib/active_model/validations/inclusion.rbのdocの修正です。

validates_inclusion_ofメソッドのdoc内のexampleコードで、genderを使っていたのを、それ以外の単語を使用するよう修正しています。

Merge pull request #32582 from cassidycodes/better-examplesと同様に、Inclusive Languageを使うため。


Merge pull request #32602 from Envek/fix/csp-multiple-nonces

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

Content-Security-Policyのnonceヘッダーがリクエストの度に増えてしまう(前のリクエストのnonceヘッダーがそのまま残ってしまう)バグがあったのを修正しています。


Don't link issue number in CHANGELOG [ci skip]

actionpack/CHANGELOG.mdの修正です。

CHANGELOGのエントリーにissueへのリンクが含まれていたのを、他のエントリー同様リンクは含まないよう修正しています。


Remove unused literal introduced in #32602

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

Content-Security-Policyのdirectivesを生成す際に、使用しないリテラルを生成していたのを、生成しないよう修正しています。

rails commit log流し読み(2018/04/17)

2018/04/17分のコミットです。

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


Update Rails minor version from 5.1 to 5.2 [ci skip]

guides/source/_welcome.html.erbの修正です。

http://guides.rubyonrails.org/ のTOPに表示されるRailsのバージョンが5.1になっていたのを、5.2に修正しています。


Add the reference to Rails Guides 5.2 from the Edge Guides

guides/source/_welcome.html.erbの修正です。

各guideへのリンクの一覧に、http://guides.rubyonrails.org/v5.2/ へのリンクを追加しています。


Merge pull request #32582 from cassidycodes/better-examples

各doc内のexampleコードで、Inclusive Language(性差のない語)を使うようにしています(genderを使っていたのを、それ以外の単語を使用するよう等々)。


Remove unused attr_writer :joinable on Transaction

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

使用していないConnectionAdapters::Transactionクラスのattr_writer :joinableを削除しています。


ActionController -> Action Controller [ci skip]

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

ActionView::Context modueのdoc内のActionControllerAction Controllerに修正しています。


Merge pull request #32594 from utilum/structure_dump_create_table

railties/test/application/rake/multi_dbs_test.rbの修正です。

db_migrate_and_schema_dump_and_loadでdumpされた内容をチェックする際に、CREATE TABLEIF NOT EXISTSが含まれていてもテストがパスするよう修正しています。

SQLite 3.16.0からCREATE TABLE文にIF NOT EXISTSが含まれるようになった為。


Merge pull request #32556 from utilum/splat

actioncable/test/channel/stream_test.rbactivesupport/test/cache/behaviors/cache_store_behavior.rbの修正です。

Rubyのwarning(arning: passing splat keyword arguments as a single Hash toxx'`)が出ている箇所があったのを修正しています。

Ruby 2.6からHash オブジェクトをキーワード引数への展開として呼び出すとwarningが出るようになったので、splat展開で引数を渡さないよう修正しています。

rails commit log流し読み(2018/04/16)

2018/04/16分のコミットです。

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

railties/CHANGELOG.md


Deprecate support for using HOST environment to specify server IP (#32540)

railties/lib/rails/commands/server/server_command.rbの修正です。

rails serverコマンドで、serverのIPをENV["HOST"]で指定出来たのがdeprecateになりました。代わりに、ENV["BINDING"]で指定出来るようになっています。

SuSEだとデフォルトでHOST環境変数が設定されており(値はHOSTNAME)、ユーザが意図せず、serverがHOSTNAMEにbindingされてしまうという問題がありました。そのため、HOSTという環境変数名をやめて、BINDINGという環境変数名を使用するようにしています。

rails commit log流し読み(2018/04/15)

2018/04/15分のコミットです。

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


Fix redis store clear keys outside the namespace

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

RedisCacheStore#clearメソッドでnamespaceを指定しても全ての値がclearされてしまうバグがあったのを修正しています。


Add missing require "benchmark"

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

benchmarkのrequireが不足していたので追加しています。

rails commit log流し読み(2018/04/14)

2018/04/14分のコミットです。

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


Fix rendering a differently-formatted partial after caching

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

viewをcacheした後に、表示しようとしているviewと異なるforamtのpartial templateを使用とした場合に、ActionView::MissingTemplateでエラーになってしまうバグがあったのを修正しています。

# index.xml.builder
cache do
  xml.title "Hello!"
end

xml.body cdata_section(render("formatted_partial"))
# _formatted_partial.html.erb
<p>Hello!</p>

上記のように、viewのformatはxmlでその中で使用しているpartialのformatはhtml、というようなケースでエラーになったとのことです。


Fix broken nodocs

:nodoc:を指定したつもりが末尾のコロンが足りてなくて、API docに表示されてしまっていたメソッドがあったので、末尾にコロンを追加し対応しています。

rails commit log流し読み(2018/04/13)

2018/04/13分のコミットです。

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

activesupport/CHANGELOG.md


Add WebSocket URI support to CSP DSL mappings

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

Content-Security-Policyのscript-srcディレクティブにWebSocketのURL(ws及びwss)を指定出来るよう修正しています。


Don't doc _original_sum_with_required_identity

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

内部用メソッドの_original_sum_with_required_identity:nodoc:の指定を追加しています。


Merge pull request #32539 from chancancode/anticompress

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

ActiveSupport::Cacheでcompressionが有効になっている場合に、書き込まれる値が圧縮する前の元の値より大きくなってしまう(圧縮前、圧縮後両方の値を書き込んでいた)バグがあったのを修正しています。


Fix database.yml merging

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

database.ymlsharedセクションを使用していた場合に、sharedセクションの値が正しく使用されないバグがあったのを修正しています。


Use SecureRandom.random_bytes instead of SecureRandom.bytes

activesupport/test/cache/behaviors/cache_store_behavior.rbの修正です。

ランダムなバイナリ文字列を作成するのにSecureRandom.bytesメソッドを使用していたのを、SecureRandom.random_bytesを使用するよう修正しています。

SecureRandom.bytesメソッドはRuby 2.3以下に存在しないメソッドで、このメソッドを使用している影響で5-2-stableのテストがこけていました。また、SecureRandom.bytesはpublicなメソッドではないような為、ドキュメントにも記載されているSecureRandom.random_bytesメソッドを使用するようにしています。


Add .keep exception for storage folder

railties/lib/rails/generators/rails/app/templates/gitignore.ttの修正です。

デフォルトで生成されるgitignoreファイルに!/storage/.keepの指定が漏れていたのを修正しています。

この指定が無いとstorageフォルダ自体がバージョン管理に追加されない為、指定を追加しています。


fix spelling in docs for ActiveJob::Serializers::ObjectSerializer#deserialize

activejob/lib/active_job/serializers/object_serializer.rbのdocの修正です。

ActiveJob::Serializers::ObjectSerializer#deserializeメソッドのdocのグラマーの修正を行なっています。


Update security.md with latest underground market prices

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

Session Hijackingの項、Symantec ISTRの報告内容を紹介している箇所を、最新の内容に更新しています。


couple of edits [ci skip]

actionview/Rakefileのdocの修正です。

taskのコメントに記載されているRailsコンポーネント名を、正式名称(ActiveRecord -> Active RecordActionPack -> Action Pack)に修正しています。

rails commit log流し読み(2018/04/12)

2018/04/12分のコミットです。

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


Remove link for the kindle version of guides on edge

guides/source/index.html.erbの修正です。

edgeのrails guideのkindle版へのリンクを削除しています。

kindle版のguideの生成処理は割と負荷が高い処理で、その処理のせいでrails guideを動かしてるサーバのCPUがずっと負荷が高い状態(CPUを100%使用している状態)になってしまっていました。で、それを避ける為、edgeについてはkindle版を生成しないようにしたとの事です。

参考:Disable mobi generation for rails guides on edge


don't check for immutability when setting skip_preloading as it doesn't effect the arel and the arel may already be generated by fresh_when

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

collection caching と HTTP cachingを一緒に使用した場合に、ActiveRecord::ImmutableRelationがraiseされてしまうバグがあったのを修正しています。

skip_preloading!を呼び出した際、assert_mutability!メソッドを使用してload済みか、及び、@arelが定義済みかどうかをチェックするようになっていました。ただ、HTTP cachingを使用している場合(fresh_whenを使用している場合)、arelメソッドが呼ばれる為、既に@arelが定義済みになり、結果ActiveRecord::ImmutableRelationが発生してしまっていました。

skip_preloading!はそもそもquery生成に影響がある処理ではなく、arelが既に使用されているかどうかのチェックはそもそも不要だろう、という事で、チェック処理を行わないよう修正しています。


Fix MySpace Samy worm link [ci skip]

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

MySpace Samy wormへのリンクが古いページへのリンクになっていたのを修正しています。


Cache::Store#read: Fix fixed-width end tag in docs

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

Cache:Store#readメソッドのdocの修正です。

:expires_inオプションを囲むttタグの閉じタグが不足していたのを修正、及び、1行80文字に収まるよう、適切な位置に改行を追加しています。


Merge pull request #31913 from rywall/define-callbacks-desc

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

define_callbacksでcallbackを定義する際に、子孫のクラスにもcallbackを定義するよう修正しています。

子のクラスにもcallbackが定義されていないと、親のクラスでcallbackを呼んだ際にエラーになってしまう為。

class Foo < ActiveRecord::Base
end

ActiveRecord::Base.define_model_callbacks :greet
ActiveRecord::Base.after_greet { puts 'goodbye' }
# => NoMethodError: undefined method `prepend' for nil:NilClass