【问题标题】:How to disable Rack-Mini-Profiler temporarily?如何暂时禁用 Rack-Mini-Profiler?
【发布时间】:2012-09-06 17:38:02
【问题描述】:

我在 Rails 中使用 rack mini profiler 很好,但在一些编码会话期间,特别是在我处理许多不同的客户端代码时,它会妨碍我。 (主要在我的客户端调试工具网络图等)

我正在尝试使用前置过滤器将其关闭,该过滤器也用于查看用户是否有权查看个人资料,但“取消授权”似乎对我没有任何作用。这是我的代码,称为前置过滤器:

def miniprofiler  
 off = true
 if off || !current_user
  Rack::MiniProfiler.deauthorize_request
  return
 elsif current_user.role_symbols.include?(:view_page_profiles)    
  Rack::MiniProfiler.authorize_request
  return
 end
 Rack::MiniProfiler.deauthorize_request
end

我也知道有一个设置“Rack::MiniProfiler.config.authorization_mode”,但我找不到有关可能设置的文档,并且没有看到它在代码中使用?现在它告诉我 :allow_all,但 :allow_none 也不做任何事情。

即使我可以在开发环境文件中临时设置一个值并重新启动服务器,这也符合我的目的。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rack-mini-profiler


    【解决方案1】:

    获取最新信息并输入:

    http://mysite.com?pp=disable

    完成后输入

    http://mysite.com?pp=enable

    查看?pp=help了解所有选项:

    将以下内容附加到您的查询字符串: pp=help : 显示这个屏幕 pp=env : 显示机架环境 pp=skip : 跳过此请求的迷你分析器 pp=no-backtrace :不收集所有执行的 SQL 的堆栈跟踪(粘性,使用 pp=normal-backtrace 启用) pp=normal-backtrace (*) : 从所有执行的 SQL 中收集堆栈跟踪并正常过滤 pp=full-backtrace :为执行的 SQL 启用完整的回溯(使用 pp=normal-backtrace 禁用) pp=sample : 示例堆栈跟踪并返回隔离大量使用的报告(实验最适合堆栈跟踪 gem) pp=disable :禁用此会话的分析 pp=enable :启用此会话的分析(如果以前禁用) pp=profile-gc:对该请求执行 gc 分析,分析请求生成的 ObjectSpace(仅限 ruby​​ 1.9.3) pp=profile-gc-time:对此请求执行内置 gc 分析(仅限 ruby​​ 1.9.3)

    【讨论】:

    • 太棒了!感谢您添加 Sam!
    • @DaveSanders 不用担心,请随时在 community.miniprofiler.com 上提出任何功能请求等
    • @SamSaffron 有没有办法在我明确执行 pp=enable 之前先禁用它?
    • @SamSaffron 我正在尝试在我的前端构建一个开关,它将禁用或启用 MiniProfiler。如何检测它当前是禁用还是启用?
    【解决方案2】:

    您也可以使用Alt+p 进行切换。

    【讨论】:

    • 特别有用,当使用start_hidden 选项时!!
    • 超级有用的答案。
    【解决方案3】:

    如果您希望最初禁用探查器,然后按需激活...在初始化程序文件中添加预授权回调,例如:

    Rack::MiniProfiler.config.pre_authorize_cb = lambda {|env| ENV['RACK_MINI_PROFILER'] == 'on'}
    

    然后在您的应用程序控制器中,添加一个 before_filter 来查找 pp 参数

    before_filter :activate_profiler
    def activate_profiler
      ENV['RACK_MINI_PROFILER'] = 'on' if params['pp']
      ENV['RACK_MINI_PROFILER'] = 'off' if params['pp'] == 'disabled'
    end
    

    您的环境最初不会设置 RACK_MINI_PROFILER,但如果您想打开它,您可以将 ?pp=enabled 添加到您的网址上。然后您可以稍后再次禁用(pp=disabled 只会在当前会话中将其关闭,但将 ENV 变量设置为 off 将完全杀死它,直到您重新强制打开它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2014-07-02
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多