2014-09-24 2 views
2

У меня есть эта строка: YAMLYAML.load поднять исключение: RangeError: bignum слишком большой, чтобы конвертировать в `длинные»

--- 
lease: 2014-09-26 05:20:39.616606000 Z 
createtime: 2014-09-20 05:20:39.616606000 Z 
leased_at: 2014-09-23 00:22:37.052173269 +08:00 

Моя рубин версия довольно старая, но я не могу обновить его, моя версия:

ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux] 

Когда я пытаюсь использовать YAML.load разобрать вышеупомянутую строку:

YAML.load(str) # where str is above string 

Я получил следующее сообщение об ошибке:

irb(main):028:0> YAML.load(str) 
RangeError: bignum too big to convert into `long' 
    from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `utc' 
    from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `node_import' 
    from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `load' 
    from /build/toolchain/lin32/ruby-1.9.1-p376/lib/ruby/1.9.1/yaml.rb:133:in `load' 
    from (irb):28 

Я считаю, что проблема в том, что времена содержат слишком длинную миллисекунду. Учитывая, что я не могу обновить свой рубин, как я могу успешно разобрать строку YAML?

ответ

0

Вы можете использовать regexp непосредственно в строке YAML для соответствия вашему шаблону времени и обрезать миллисекунды.

Подробнее о regexp in ruby: http://ruby-doc.org/core-2.1.1/Regexp.html

Смежные вопросы