gpt4 book ai didi

ruby - 我如何使用 Syck 在 JRuby 1.9 中执行 YAML?

转载 作者:数据小太阳 更新时间:2023-10-29 08:10:33 24 4
gpt4 key购买 nike

如果我在 Ruby 1.9 模式下运行 JRuby,并告诉它使用 Syck 而不是 Psych,似乎没有任何效果。我错过了什么吗?

Andrew-Grimms-MacBook-Pro:~ agrimm$ ruby --version
jruby 1.6.1 (ruby-1.8.7-p330) (2011-05-08 3fe11da) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_24) [darwin-x86_64-java]
Andrew-Grimms-MacBook-Pro:~ agrimm$ ruby --1.9 -S irb
jruby-head :001 > require "yaml"
=> true
jruby-head :002 > YAML::ENGINE.yamler = "syck"
=> "syck"
jruby-head :003 > YAML::ENGINE.yamler
=> "syck"
jruby-head :004 > 42.to_yaml
NameError: uninitialized constant Syck::Yecht
from org/jruby/RubyModule.java:2569:in `const_missing'
from org/jruby/RubyClass.java:218:in `allocate'
from /Users/agrimm/.rvm/rubies/jruby-head/lib/ruby/1.9/syck.rb:102:in `emitter'
from /Users/agrimm/.rvm/rubies/jruby-head/lib/ruby/1.9/syck.rb:399:in `quick_emit'
from /Users/agrimm/.rvm/rubies/jruby-head/lib/ruby/1.9/syck/rubytypes.rb:371:in `to_yaml'
from (irb):4:in `evaluate'
from org/jruby/RubyKernel.java:1093:in `eval'
from org/jruby/RubyKernel.java:1418:in `loop'
from org/jruby/RubyKernel.java:1205:in `catch'
from org/jruby/RubyKernel.java:1205:in `catch'
from /Users/agrimm/.rvm/rubies/jruby-head/bin/jirb:17:in `(root)'

背景:由于我在 How do I deserialize classes in Psych? 中的 Psych 问题,我正在尝试使用 Syck

最佳答案

看起来它没有在 JRuby 中实现。在 1.9.2 下:

ruby-1.9.2-p180 :001 > require 'YAML'
=> true
ruby-1.9.2-p180 :002 > require 'YAML/syck'
=> true

在 JRuby 1.6.2 下

jruby-1.6.2 :001 > require 'YAML'
=> true
jruby-1.6.2 :002 > require 'YAML/syck'
LoadError: no such file to load -- YAML/syck
from org/jruby/RubyKernel.java:1038:in `require'
from (irb):2:in `evaluate'
from org/jruby/RubyKernel.java:1088:in `eval'
from /Users/matt/.rvm/rubies/jruby-1.6.2/lib/ruby/1.8/irb.rb:158:in `eval_input'
from /Users/matt/.rvm/rubies/jruby-1.6.2/lib/ruby/1.8/irb.rb:271:in `signal_status'
from /Users/matt/.rvm/rubies/jruby-1.6.2/lib/ruby/1.8/irb.rb:155:in `eval_input'
from org/jruby/RubyKernel.java:1419:in `loop'
from org/jruby/RubyKernel.java:1191:in `catch'
from /Users/matt/.rvm/rubies/jruby-1.6.2/lib/ruby/1.8/irb.rb:154:in `eval_input'
from /Users/matt/.rvm/rubies/jruby-1.6.2/lib/ruby/1.8/irb.rb:71:in `start'
from org/jruby/RubyKernel.java:1191:in `catch'
from /Users/matt/.rvm/rubies/jruby-1.6.2/lib/ruby/1.8/irb.rb:70:in `start'
from /Users/matt/.rvm/rubies/jruby-1.6.2/bin/irb:17:in `(root)'

虽然我(还)不是 JRuby 专家,但 JRuby 1.6.0 的发行说明说 与 Ruby 1.9.2 的兼容性达到了非常高的水平。 也许这不会扩展syck..?

关于ruby - 我如何使用 Syck 在 JRuby 1.9 中执行 YAML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com