我需要Range
在 Rails 上下文中使用 YAML 序列化 ruby 。我想检查整数范围和字符串范围是否正确序列化。
这是我的测试:
# classic irb
require 'yaml' # => true
YAML::VERSION # => "0.60"
YAML.dump(1..2) # => "--- !ruby/range \nbegin: 1\nend: 2\nexcl: false\n"
YAML.dump("1".."2") # => "--- !ruby/range \nbegin: \"1\"\nend: \"2\"\nexcl: false\n"
这两个输出是完全不同的,所以我向前并在我的 rails 应用程序中对其进行了编码。
然而,在 Rails 上下文中,ruby 似乎忘记了如何正确序列化一系列整数!
# ./script/rails console
Rails::VERSION::STRING # => "3.0.15"
RUBY_VERSION # => "1.8.7"
YAML::VERSION # => "0.60"
YAML.dump(1..2) # => "--- !ruby/range\n begin: 1\n end: 2\n excl: false"
YAML.dump("1".."2") # => "--- !ruby/range\n begin: 1\n end: 2\n excl: false"
# The two outputs are identical, the distinction between integers and strings is lost!
ruby 和 ruby on rails 似乎都使用相同版本的 YAML 库。如果我没记错的话,我的 ruby 版本不支持在多个编码器引擎之间切换。
我有几个问题:
- 造成这种差异的原因是什么?
- 新版本的ruby / rails是否会出现此问题?
- 我怎样才能以兼容的方式正确解决这个问题?
谢谢您的帮助。