2015/03/28分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Improve CHANGELOG for fix for respecting pluralize_table_names [ci skip]
railties/CHANGELOG.md
の修正です。
先日コミットされたpluralize_table_names
の修正に関するエントリーについて、グラマーの修正を行っています。
Merge pull request #18939 from georgeclaghorn/variant-inquiry
ActionPack、ActiveSupportの修正です。
request variantsを使用している際、variantsに設定された値を簡単に確認出来るようにする為のメソッドを追加しています。
request.variant = :phone request.variant.phone? # true request.variant.tablet? # false request.variant = [:phone, :tablet] request.variant.phone? # true request.variant.desktop? # false request.variant.any?(:phone, :desktop) # true request.variant.any?(:desktop, :watch) # false
元々はrequest.variant
変数を直接参照するしか無かったので、大分便利になりました。
また、上記を実現する為に、新たにActiveSupportにArrayInquirer
クラスを追加しています。
variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet]) variants.phone? # => true variants.tablet? # => true variants.desktop? # => false variants.any?(:phone, :tablet) # => true variants.any?(:phone, :desktop) # => true variants.any?(:desktop, :watch) # => false
元々ActiveSupport::StringInquirer
クラスがあり、それのArray版になります。
(StringInquirerはRails.env
に使用されていて、Rails.env.development?
メソッドは上記クラスの仕組みで実装されている)
Arrayに設定されている値の確認に便利そうですねえ。
なお、ArrayInquirer
のインスタンスを生成する為のArray#inquiry
メソッドも追加されたのですが、こちらは次のコミットで削除されています。
先のコミットで追加されたArray#inquiry
メソッドを削除しています。
ArrayInquirer
のインスタンスを生成するには、ArrayInquirer
クラスのコンストラクタを使用すれば良く、Array#inquiry
メソッドをわざわざ別に用意する必要は無い、との理由により削除されてたようです。
Define a setup method instead of using setup as block
actionpack/test/dispatch/request_test.rb
の修正です。
setup
blockの代わりに、setup
メソッドを使用するよう修正しています。
- setup do + def setup + super
Remove old and not working link. [ci skip]
rails guideのRuby on Rails Security Guide
の修正です。
既に存在しないdev.rubyonrails.org
へのリンクが残っていたのを削除しています。
activesupport/lib/active_support/core_ext/module/aliasing.rb
、
activesupport/lib/active_support/core_ext/module/deprecation.rb
の修正です。
'active_support/deprecation'のrequireを削除しています。読み込みが循環してしまっていた為のようです。
Return super in ActionController::Parameters.const_missing
actionpack/lib/action_controller/metal/strong_parameters.rb
の修正です。
ActionController::Parameters.const_missing
メソッドで引数の定数名がNEVER_UNPERMITTED_PARAMS
で無かった場合にreturn
するよう修正しています。
- super unless const_name == :NEVER_UNPERMITTED_PARAMS + return super unless const_name == :NEVER_UNPERMITTED_PARAMS
return
が無いと、以降の処理の都合上必ずalways_permitted_parameters
がreturn
されてしまう為、
ActionController::Parameters
を継承したサブクラスを使用し、そこでconst_missing
が発生した場合に予想外のalways_permitted_parameters
が値が返されてしまい、問題になる為修正したようです。
コード見る限り、単純にタイポしてreturn
が漏れてしまったのかなーという気が。