【问题标题】:Apply monkey patch for JSON parsing in rails为 Rails 中的 JSON 解析应用猴子补丁
【发布时间】:2013-04-08 02:34:51
【问题描述】:

我正在尝试处理 BigCommerce API 返回无效 JSON 对象的边缘情况问题,从而导致未配对的八位字节,如下所述:A JSON text must at least contain two octets

我相信解决方案是部署代码(来自该线程):

module JSON
  def self.parse_nil(json)
    JSON.parse(json) if json && json.length >= 2
  end
end

parsed = JSON.parse_nil(json)

我在哪里部署此代码以应用补丁?

【问题讨论】:

    标签: ruby-on-rails json patch


    【解决方案1】:

    此类补丁通常添加到/config/initializers 目录中的一个空的.rb 文件中(参见here 示例)。请注意,补丁不应包含最后一行:

    parsed = JSON.parse_nil(json)
    

    这是为了演示目的而添加的。

    【讨论】:

    • 我已经把它放在/config/initializers/json.rb 中,它似乎正在加载,但是它仍然抛出无法解析的 JSON 响应错误。我错过了覆盖parse 方法的行吗?
    • 这个补丁的想法是在你应该使用JSON.parse的地方使用JSON.parse_nil。如果此调用由其他库进行,则需要创建别名方法链才能正确解析。
    • 明白了。进入并修改 BigCommerce gem 以调用 parse_nil 而不是 parse ,一切都很好。谢谢:)
    • 请注意,修改 gem 将适用于该安装,但需要为新部署重新制定(包括每个当前和未来的开发、测试、登台和生产环境)。推荐的方法是在同一个初始化程序中使用 alias_method_chain,或者通过另一个初始化程序对 gem 实现进行猴子补丁。
    猜你喜欢
    • 2011-03-26
    • 2015-08-21
    • 1970-01-01
    • 2016-09-01
    • 2012-09-16
    • 2012-12-18
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多