HTTP Accept-Language ヘッダーを介してロケール切り替えを追加したい Rails アプリ (3.2.12) があります。
それを達成するために私がしたこと:
私は自分のGemfileにrack-contribを追加しました:
gem 'rack-contrib', require: 'rack/contrib'
run bundle install
、ミドルウェアを my に追加しましたconfig/application.rb
:
config.middleware.use Rack::Locale
リクエストenv myコントローラーを調べます:
puts request.env.keys.select{|v| v=~/rack/ }
私が実行する仕様はコントローラーの仕様であり、それが含まrender_views
れています。
私の問題:
rack.locale
リクエスト環境にキーがありません。再確認しましたが、最後の直前にrake middlware
リストされています。Rack::Locale
run MyApp::Application.routes
いくつかのデバッグの後、実行時にミドルウェアが呼び出されないことがわかりました
rspec spec/controllers/authentication_controller_spec.rb
しかし:同じコードを実行するとscript/rails s thin
、リクエストenvでより多くのキーが得られます。つまり:
rack.request.cookie_string
rack.locale
rack.request.query_string
rack.request.query_hash
では、質問は、RSpec が Rack ミドルウェアの採用を拒否するのはなぜですか?