【问题标题】:Prevent json/pure from loading in Rails防止 json/pure 在 Rails 中加载
【发布时间】:2012-02-13 20:06:44
【问题描述】:

我正在编写一个 Rails 应用程序,使用“json”gem,它可以在“json/pure”和“json/ext”实现之间切换的行为导致了问题。具体来说,有时 gem 会引入类似的行

require 'json/pure'

发生这种情况时,JSON.parser 和 JSON.generator 会在全局范围内切换到基于 ruby​​ 的慢速版本。然后每次调用 JSON.parse 和 JSON.generate 都很慢。

我想避免我不知道的不断变化的 gem 依赖项突然使我的网站变慢的情况。如何防止加载“json/pure”、强制使用“json/ext”或以其他方式防止将来出现此问题?

【问题讨论】:

    标签: ruby-on-rails ruby json rubygems require


    【解决方案1】:

    为了防止 json/pure 被加载,这是可行的:

    require 'json/ext'
    JSON.freeze
    

    你必须在需要 json/pure 之前运行它。

    【讨论】:

      【解决方案2】:

      不知道这对你的情况是否有效,治疗可能比疾病更糟糕:

      module Kernel
        alias old_require require
      
        def require(path)
          if path =='json/pure'
             # do something appropriate
          else
             old_require path
          end
        end
      end
      

      当我想在我们的 rails 应用程序中对各种启动瓶颈的性能进行基准测试时,我已经修补了 require。也许您可以看到为什么这些 gem 试图要求 'json/pure' 并可能以另一种方式阻止它。

      我发现 gem 源代码通常非常易读。 bundle open 对我有用。

      【讨论】:

      • 您可能希望将super 更改为old_require(path)
      • 我可以在检测到它时停止它 - 问题是很多人都在处理代码库,我想以编程方式阻止人们将来使用 json/pure。跨度>
      猜你喜欢
      • 2022-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2016-03-21
      • 2020-01-21
      • 1970-01-01
      • 2016-12-28
      相关资源
      最近更新 更多