ActiveAdmin和better_errors gem不玩好。任何渲染错误都会使Rails服务器卡住并占用我所有的cpu,需要kill -9
从死亡旋转中跳出来并将碎片捡起来。是否有一种方法,有条件地使用better_errors在我的应用程序的一部分,而不使用它在部分ActiveAdmin生活?
在我的例子中,我准备了lib/middleware/better_errors_patch.rb.
if Rails.env.development? || Rails.env.test?
require 'better_errors'
module BetterErrors
class Middleware
def call(env)
if allow_ip?(env) && !env['PATH_INFO'].match(%r{/admin/})
better_errors_call env
else
@app.call env
end
end
end
end
end
我解决这个monkey_patch。首先,在Gemfile中设置gem 'better_errors', require: false
。然后在应用中加入require './lib/middleware/ex_better_errors'
。rb范围。