如何序列化异常

use*_*467 6 ruby

根据ruby-docapidock,您可以使用to_json和序列化和反序列化异常json_create.

但是在浪费了一些时间试图使用它们之后,我仍然没有找到办法.

调用exc.to_json给了我一个空哈希,并Exception.json_create(hash)给我这个错误:undefined method 'json_create' for Exception:Class

我想我可以很容易地重新创建这些函数,因为源代码可用,但我宁愿理解我做错了什么......有什么想法吗?

Jor*_*ing 13

默认情况下,JSON模块不会扩展Exception.你必须require "json/add/exception".我不确定这是否记录在任何地方:

require "json/add/exception"

begin
  nil.foo
rescue => exception
  ex = exception
end

puts ex.to_json
# => {"json_class":"NoMethodError","m":"undefined method `foo' for nil:NilClass","b":["prog.rb:5:in `<main>'"]}
Run Code Online (Sandbox Code Playgroud)

看看ext/json/lib/json/add在Ruby源,看看哪些类以这种方式工作.如果这样做require "json/add/core",将为Date,DateTime,Exception,OpenStruct,Range,Regexp,Struct,Symbol,Time等加载JSON扩展.

  • 有人应该向红宝石或其他东西发送一个doc补丁. (3认同)