0
我有一個Rails應用程序(3.2.12),我想通過HTTP Accept-Language頭添加區域設置切換。爲什麼rspec-rails跳過中間件?
我做了什麼做到這一點:
我加了機架的contrib我的Gemfile:
gem 'rack-contrib', require: 'rack/contrib'
跑bundle install
,增加了中間件到我的config/application.rb
:
config.middleware.use Rack::Locale
並檢查請求env我的控制器:
puts request.env.keys.select{|v| v=~/rack/ }
我運行的規格是一個控制器規格,它有render_views
在裏面。
我的問題:
有一個在請求環境沒有rack.locale
關鍵。我仔細檢查了rake middlware
,它在run MyApp::Application.routes
之前列出了Rack::Locale
。
經過一番調試,我發現,中間件是從來沒有所謂的,當我運行
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中間件?