【问题标题】:undefined method `encode' for ActiveSupport::JSON:ModuleActiveSupport::JSON:Module 的未定义方法“编码​​”
【发布时间】:2011-07-13 04:01:18
【问题描述】:

我经常收到此错误,但似乎也很随机。

C:/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/core_ext/object/to_json.rb:20:in `to_json'

在对哈希调用 to_json 时偶尔会发生这种情况,例如:

{:@i=>18}.to_json

以前有人遇到过这个吗?这很奇怪,在互联网上找不到太多相关的。

【问题讨论】:

    标签: ruby json activesupport


    【解决方案1】:

    我在使用线程时得到了这个(但我没有使用 activerecord 而是 SimpleRecord(亚马逊的数据库)。解决方案是首先使用 .to_json 而不使用线程:

    MyFantasticModel.first.to_json 
    # and then run the threaded stuff
    @threads << Thread.new {...
    

    【讨论】:

    • 那么您认为这与 SimpleRecord(或者可能是“aws”gem)有关吗?
    • 我认为它与 activesupport 初始化有关。我已将我的 simplerecord 的后端切换为雾以在欧洲服务器上运行。
    • 应该是一个activerecord的东西,是的。我时不时出现同样的问题。像 {:a =&gt; :b}.to_s 这样的初始化程序作为程序的第一行帮助我修复了它。
    • 当我使用线程时,这也修复了它。我认为这是因为 ActiveRecord 懒惰地初始化了 to_json 函数。如果它最终在一个线程中执行此操作,那么您的其他线程可能会在它正确初始化之前尝试访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2011-04-13
    • 1970-01-01
    • 2018-11-05
    • 2014-08-14
    • 2017-10-01
    相关资源
    最近更新 更多