なるようになるブログ

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

rails commit log流し読み(2015/08/27)

2015/08/27分のコミットです。

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

actionpack/CHANGELOG.md


Removed duplicate require ‘models/computer’

ActiveRecordのテストの修正です。

重複してあったmodels/computerのrequire処理を削除しています。


Merge pull request #21336 from yui-knk/refactor/to_use_getter

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

connectionオブジェクトを使用する際、インスタンス変数の@connectionを使用するのではなく、ラッパーメソッドであるconnectionメソッド経由でオブジェクトを取得するよう修正しています。


remove useless conditional

actionpack/lib/action_controller/metal.rbの修正です。

to_aメソッドから、不要なresponseオブジェクトがnilじゃないかどうかのチェック処理を削除しています。

provide a request and response to all controllersの対応により、必ずresponseオブジェクトを保持するようになり、チェックする必要はなくなった為、削除したようです。


remove useless conditional

actionpack/lib/action_controller/metal.rbの修正です。

performed?メソッドから、responseオブジェクトがnilかどうかのチェック処理を削除しています。理由は上のコミット同様。


ask the response for the status

actionpack/lib/action_controller/metal.rbの修正です。

statusの値を取得する際、responseオブジェクト経由で値を取得するよう修正しています。


use the content_type method on the request object

actionpack/lib/action_controller/metal.rbの修正です。

content_typeの値を取得する際、responseオブジェクト経由で値を取得するよう修正しています。


remove ivars from the "protected" list

actionpack/lib/action_controller/base.rbの修正です。

インスタンス変数の一覧から、@_status, @_headersを削除しています。どちらも、responseオブジェクトから値を取るようになった為、変数として保持する必要がなくなった為。


remove useless conditional

actionpack/lib/action_controller/metal/head.rbの修正です。

headメソッドから、responseオブジェクトがnilかどうかのチェック処理を削除しています。


remove useless status set

actionpack/lib/action_controller/metal/head.rbの修正です。

headメソッドから、不要なresponse.statusへの値の設定処理を削除しています。

Controller#status=はresponse objectにdelegateされるようになり、controllerでresponseオブジェクトに値を設定する必要はなくなった為、削除したとの事です。


headers should delegate to the response object

actionpack/lib/action_controller/metal.rbの修正です。

headers_responsedelegateするよう修正しています。


include ActionView::Rendering in the minimal controller

actionpack/lib/action_controller/metal.rbactionpack/test/controller/new_base/render_html_test.rbの修正です。

テスト用のMinimalControllerで、ActionView::Renderingをincludeするよう修正しています。Renderingが無いと、content typeが正しく設定されない為、との事です。


remove useless method

RackDelegation#response_body=メソッドを削除しています。

responseオブジェクトへのbodyの設定を行うメソッドだったのですが、処理はsubclassで行う為、RackDelegation moduleで行う必要は無い、との事で削除されたようです。


remove RackDelegation module

Action Packの修正です。

ActionController::RackDelegation moduleを削除しています。

全てのcontrollerのインスタンスがrequest、及びresponseオブジェクトを必ず保持するようになり、rackにdelegateする必要性がなくなった為、削除したとの事です。


stop passing the options hash to _process_format

Action Pack / Action Viewの修正です。

Rendering moduleの_process_formatメソッドに、options hashをまるまる渡していたのを、必要な値(plainかどうか)のみ渡すよう修正しています。


Pull plain content type handling up to render

Action Pack / Action Viewの修正です。

Rendering moduleの_process_formatメソッドで行っていた、renderメソッドにplainオプションが指定された場合の処理を、そもそも_process_formatメソッドではなく、呼び出し元のrenderメソッドで行うよう修正しています。

_process_formatメソッドから処理分岐を減らす為、との事です。


only call self.content_type= when there is a response

Action Packの修正です。

Rendering moduleのcontent_typeの設定処理を、responseオブジェクトが存在するのみ行われるよう修正しています。

AbstractControllerはrequest、及びresponseオブジェクトが存在しなくても動作するよう期待されているらしく、そのため、チェック処理を追加したようです。


remove useless code

actionpack/lib/abstract_controller/rendering.rbの修正です。

renderメソッドから不要な_process_formatメソッドの呼び出し処理を削除しています。

_process_formatメソッドではrendered_formatの設定を行っているのですが、ActionView::Renderingをmixinしているとき、lookup_contextメソッドの方で先にrendered_formatの設定をしているはずで、 そちらで設定した値を使用すれば良く、ここで再度設定する必要は無いため、削除したようです。


Remove useless conditional

actionpack/lib/abstract_controller/rendering.rbの修正です。

_normalize_renderメソッドから、responseオブジェクトがnilかどうかのチェック処理を削除しています。


remove redefined method

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

Response#locationメソッドを削除しています。同じメソッドRack::Response::Helpersの方で実装しており、そちらを使用する為、削除したとの事です。


Merge pull request #21389 from Gaurav2728/gaurav-unused_require_file

各テストファイルで、不要なminitest/mockのrequireを削除しています。


Merge pull request #21392 from y-yagi/rm_require_support_files

railties/lib/rails/generators/rails/plugin/templates/test/test_helper.rbの修正です。

デフォルトで生成されるrails engine用のtest_helper.rbで、使用していないsupportディレクトリ配下のファイルのrequire処理が行われていたのを削除しています。


Merge pull request #21384 from jeremyf/updating-ActionController-TestSession-to-behave-as-a-hash-with-indifferent

actionpack/lib/action_controller/test_case.rbの修正です。

ActionController::TestSession#fetchメソッドの引数に、string以外の値を指定した場合に正しく動作しないバグがあったのを修正しています。

PRより。

class ApplicationController < ActionController::Base
  def user_strategy
    # At this point:
    # ```ruby
    # session == {
    #   "user_strategy"=>"email",
    #   "user_identifying_value"=>"hello@world.com"
    # }
    # ```
    if session.key?(:user_strategy)
      session.fetch(:user_strategy)  # => `KeyError`
    end
  end
end

Fix test session fetch の対応でActionController::TestSession#fetchメソッドを追加したのですが、 その際、受け取る引数のstringへの変換処理が足りてなかった為、エラーになるようになってしまったようです。Rails 4.2.4で発生したリグレッションです。


minor copy edit. [ci skip]

actionpack/CHANGELOG.mdの修正です。

先のActionController::TestSession#fetchメソッドの対応についてのCHANGELOGについて、説明を修正しています。