2014-11-24 4 views
0

Выполнение нечетной проблемы, когда Rack::ShowExceptions предоставляет подробные исключения для моего приложения rails 4.0.4 в рабочей среде. Добавление config.middleware.delete(Rack::ShowExceptions) в config/application.rb по-прежнему приводило к отображению Rack::ShowExceptionstemplate, и, как я полагаю, существует скрытая зависимость промежуточного программного обеспечения.Rack :: ShowExceptions enabled in production Rails 4.0.4

Например, попав в приложение с немаскированном % в POST запроса приводят к Rack::ShowExceptions шаблона визуализируемого:

Образец недействителен POST запрос:

POST /en/users/sign_in HTTP/1.1 
Host: www.localhost.dev 
Proxy-Connection: keep-alive 
Content-Length: 1 
Cache-Control: max-age=0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Origin: http://www.localhost.dev 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 
Content-Type: application/x-www-form-urlencoded 
Accept-Encoding: gzip,deflate 
Accept-Language: en-US,en;q=0.8 

% 

Rack промежуточного слоя:

$ RAILS_ENV=production rake middleware 
use Raven::Rack 
use HttpMethodNotAllowed 
use ActionDispatch::SSL 
use Rack::Sendfile 
use ActionDispatch::Static 
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007feba5b8b940> 
use Rack::Runtime 
use Rack::MethodOverride 
use ActionDispatch::RequestId 
use RequestStore::Middleware 
use Rails::Rack::Logger 
use ActionDispatch::ShowExceptions 
use ActionDispatch::DebugExceptions 
use ActionDispatch::RemoteIp 
use ActionDispatch::Callbacks 
use ActiveRecord::ConnectionAdapters::ConnectionManagement 
use ActiveRecord::QueryCache 
use ActionDispatch::Cookies 
use ActionDispatch::Session::CookieStore 
use ActionDispatch::Flash 
use ActionDispatch::ParamsParser 
use Rack::Head 
use Rack::ConditionalGet 
use Rack::ETag 
use Warden::Manager 
run MyApplication::Application.routes 

У нас есть config.exceptions_add = self.routes в config/application.rb if это актуально.

Я дал ActionPack CHANGELOG довольно близкое чтение, но вполне возможно, что этот вопрос был исправлен в более позднем выпуске! Если это так, я бы очень признателен за ссылку на него.

ответ

1

Если вы имеете в виду, что у вас есть config.exceptions_app = self.routes, тогда не делайте этого. Вы возвращаете исключительное состояние обратно в приложение, которое поднимает это исключительное состояние, поэтому оно, скорее всего, не сделает то, что вы хотите. Что случилось с приложением отказа по умолчанию?

1

Убедитесь, что у вас установлен RACK_ENV для производства, а также RAILS_ENV.

Если RACK_ENV не установлен, по умолчанию он разрабатывается, и сама стойка загружает Rack :: ShowExceptions (и некоторое другое промежуточное программное обеспечение для разработки) до инициализации Rails.