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::Localerun 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 ミドルウェアの採用を拒否するのはなぜですか?