2015/09/05分のコミットです。
CHANGELOGへの追加はありませんでした。
use Rack::Utils.unescape_path
to unescape paths
actionpack/lib/action_dispatch/middleware/static.rb
の修正です。
本来、pathのescae / unescape 処理はクエリーパラメータのescaping / unescap とは異なる処理を行う必要があったのですが、今までは同じエスケープ処理を使っていました。
で、新しくrack側にpathのescape / unescape 処理を行うようのメソッドを追加したので、pathのescape / unescape 処理については、そちらのメソッド(Rack::Utils.escape_path
/ Rack::Utils.unescape_path
)を使用するよう修正しています。
Rack::Utils.escape_path
、Rack::Utils.unescape_path
の実装は、この辺り。デフォルトだと、URI::Parser
のescape / unescap メソッドが呼ばれる感じなんですねえ。
use path escaping for email addresses
actionview/lib/action_view/helpers/url_helper.rb
、
actionview/test/template/url_helper_test.rb
の修正です。
emailのpathのエスケープ処理に、先のコミット同様、Rack::Utils.escape_path
メソッドを使用するよう修正しています。
#where fails if opts.responds_to?(:==) unexpectedly
activerecord/lib/active_record/relation/query_methods.rb
の修正です。
WhereChain#where
メソッドで、引数のopt
が:chain
であるかどうかのチェックをする際、optの==
メソッドを呼び出していたのを、Symbolの==
メソッドを呼びだすよう修正しています。
def where(opts = :chain, *rest) - if opts == :chain + if :chain == opts
Arel::Nodes::Grouping
クラスのように、独自に==
メソッドを定義しているオブジェクトをopts
に指定した場合に、==
メソッドの実行結果としてArel::Nodes::Equality
が返ってきてしまい、おかしな挙動になってしまう為、Symbol#==
メソッドで比較処理を行うように修正したとの事です。
stop inheriting from Rack::Request
Action Packの修正です。
ActionDispatch::Request
クラスがRack::Request
継承していたのを、継承しないよう修正しています。
代わりに、必要なmodule(Rack::Request::Helpers
、Rack::Request::Env
)のみインクルードするよう修正しています。
request objectsへのdelegate処理をしやすくする為、との事です。
stop using deprecated Abstract::ID class
Action Packの修正です。
deprecatedになったRack::Session::Abstract::ID
の代わりに、Rack::Session::Abstract::Persisted
クラスを使用するよう修正しています。
implement abstract store methods
Action Packの修正です。
cache関係のクラスの親クラスがRack::Session::Abstract::Persisted
に変わった事により、実装が必要なメソッド名も変わった為、
元々あったsessionの検索/書き込み/削除のメソッドを、新しいメソッド名に変更しています。
Remove mocha from ActionPack tests
Action Packのテストの修正です。