2018/07/04分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Add safe html support to arrays of translations
actionview/lib/action_view/helpers/translation_helper.rb
の修正です。
TranslationHelper#translate
メソッドでI18n.translate
で取得した結果がArray、かつ、HTMLだった場合に、html_safe
メソッドが呼ばれていなかったのを、結果がArrayだった場合もhtml_safe
メソッドを呼び出す(値全てに対してhtml_safe
メソッドを呼び出す)よう修正しています。
Merge pull request #33054 from jboler/master
Action Pack、railtiesの修正です。
routesをeager loadする際に、正しくeager load処理が行われず、ActionDispatch::Journey::Pattern::MatchData
でNoMethodError
が発生してしまうバグがあったのを修正しています。
eager loadのタイミングを修正(RoutesReloader
の初期化処理で必ず行うよう修正)し対応しています。
Add changelog entry for 42c3537 [ci skip]
actionview/CHANGELOG.md
の修正です。
Add safe html support to arrays of translationsの対応についてCHANGELOGにエントリーを追加しています。
railties/lib/rails/generators/rails/app/app_generator.rb
の修正です。
Rails::ActionMethods#method_missing
にあったコメントを削除しています。
- # TODO: Remove once this is fully in place
def method_missing(meth, *args, &block)
@generator.send(meth, *args, &block)
コメントが書かれたのが7年以上前で、現状このmethod_missing
を消すのは難しい状態なので、コメントを消してしまって良いのでは、という事で削除されています。
Better compatibility with SPEC.
actioncable/lib/action_cable/connection/stream.rb
の修正です。
Connection::Stream#hijack_rack_socket
メソッドでHijacking APIを使用する際に、rack.hijack
envをcallした値を使用するよう修正しています。
- @socket_object.env["rack.hijack"].call - @rack_hijack_io = @socket_object.env["rack.hijack_io"] + # This should return the underlying io according to the SPEC: + @rack_hijack_io = @socket_object.env["rack.hijack"].call + # Retain existing behaviour if required: + @rack_hijack_io ||= @socket_object.env["rack.hijack_io"]
RackのSPECによると、rack.hijack
envをcallした結果はrack.hijack_io
を返すよう推奨されており、別途rack.hijack_io
envを参照する必要は無い為。
参考:https://github.com/rack/rack/blob/eb040cf1bbb1b2dacd496ab0aa549de8408d8a27/SPEC#L89-L93
Use class_eval or instance_eval when triggering lazy load hooks:
activesupport/lib/active_support/lazy_load_hooks.rb
の修正です。
lazy load hookを実行する際に、実行する対象がClass or Moduleの場合、instance_eval
ではなく、class_eval
を使用するよう修正しています。
class_eval
を使用しないとrun_load_hooks
のbase
にClass or Moduleが使用された場合に、hookに指定されたメソッドが呼び出せない為。