lib/debug_extras/railtie.rb in debug-extras-0.3.0 vs lib/debug_extras/railtie.rb in debug-extras-0.3.2

- old
+ new

@@ -1,17 +1,34 @@ +require "debug_extras/middleware/debug" +require "debug_extras/middleware/fast_better_errors" + module DebugExtras class Railtie < Rails::Railtie initializer "debug_extras.configure_rails_initialization" do - if defined? ActionDispatch::DebugExceptions - app.middleware.insert_after ActionDispatch::DebugExceptions, DebugExtras::Middleware - else - app.middleware.use DebugExtras::Middleware + if Rails.env.development? + insert_middleware(DebugExtras::Debug) + insert_middleware(DebugExtras::FastBetterErrors) if better_errors_slow? end end private + def insert_middleware(middleware) + if defined? BetterErrors::Middleware + app.middleware.insert_before ActionDispatch::Reloader, middleware + elsif defined? ActionDispatch::DebugExceptions + app.middleware.insert_after ActionDispatch::DebugExceptions, middleware + else + app.middleware.use middleware + end + end + + def better_errors_slow? + return false unless defined? BetterErrors && defined? Puma + BetterErrors.binding_of_caller_available && [Rails.version, Puma::Const::PUMA_VERSION].map(&:to_i) == [5, 3] + end + def app Rails.application end end -end \ No newline at end of file +end