Я отвечаю за поддержку унаследованного приложения Ruby on Rails, и в настоящее время я тестирую его на Ruby v1.8.7 (уровень обновления 2013-12-22 375).Приложение использует Rails v3.2.22.1 (версия Rails предоставлена Rails LTS ).Я сталкиваюсь со странной проблемой синтаксиса.
В ванильной консоли IRB синтаксис хеш-ракеты для хэша работает, как ожидается, а синтаксис JSON для вызывает синтаксическую ошибку, как и ожидалось.Однако в консоли Rails синтаксис JSON работает просто отлично, и я не могу понять, почему он НЕ вызывает синтаксическую ошибку.
Есть идеи, что происходит в приведенном ниже коде?
# in Bash
$ ruby -v
ruby 1.8.7 (2013-12-22 patchlevel 375) [i686-darwin18.2.0]
# in Rails console
Loading development environment (Rails 3.2.22.1)
irb(main):001:0> system "ruby -v"
ruby 1.8.7 (2013-12-22 patchlevel 375) [i686-darwin18.2.0]
=> true
irb(main):002:0> {a: 1} # JSON syntax doesn't trigger SyntaxError
=> {:a=>1}
# loading vanilla IRB *()
irb(main):003:0> system "irb" # loading vanilla IRB
# in vanilla IRB (via Rails console, if that matters)
irb(main):001:0> system "ruby -v"
ruby 1.8.7 (2013-12-22 patchlevel 375) [i686-darwin18.2.0]
=> true
irb(main):002:0> {a: 1} # expected syntax error
SyntaxError: compile error
(irb):2: odd number list for Hash
{a: 1}
^
(irb):2: syntax error, unexpected ':', expecting '}'
{a: 1}
^
from (irb):2