난 문맥에서 YAML을 사용하여 루비 Range
을 직렬화해야합니다. 정수 범위와 문자열 범위가 제대로 직렬화되었는지 확인하고 싶습니다. 정수 범위의 레일 직렬화가 깨졌습니다.
# 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"
개의 출력 충실 별개이므로, I는 순방향있어 내 레일 애플리케이션 내부를 부호화.
그러나 레일스 컨텍스트 내에서 루비는 정수 범위를 올바르게 직렬화하는 방법을 잊어 버렸습니다!
# ./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!
레일에 루비와 루비 모두 YAML 라이브러리의 동일한 버전을 사용하는 것 같습니다. 내가 잘못 이해하지 않는다면, 내 버전의 루비는 여러 코더 엔진을 전환하는 것을 지원하지 않는다.
- 이러한 차이의 원인은 무엇입니까 : 나는 몇 가지 질문이?
- 이 문제는 의 최신 버전에서 발생합니다. ruby /레일?
- 호환되는 방법으로 어떻게 문제를 해결할 수 있습니까?
감사합니다.
2 가지 경우에 YAML :: ENGINE.yamler의 가치는 무엇입니까? –
'NameError : 초기화되지 않은 상수 YAML :: ENGINE' 두 경우 모두, <1.9 버전의 루비 때문인 것 같습니다. – ofavre