Вы используете старую или stdlib версию json gem

Я видел следующую проблему, упомянутую в другом потоке несколько дней назад среди других проблем, но решение этой проблемы (для меня), похоже, не рассматривалось.

Недавно я проверил тест на моей среде Ruby 1.9.2-p290 и получил следующую ошибку при запуске теста script:

You are using an old or stdlib version of json gem
Please upgrade to the recent version by adding this to your Gemfile:

gem 'json', '~> 1.7.7'

Эта проблема продолжалась, когда я создал совершенно новую среду Ruby 1.9.3-p392, работающую в Windows XP (не спрашивайте). Меня смущает то, что даже когда у меня установлена ​​json 1.7.7 или 1.8.0 (список gem вставлен ниже), я все равно получаю это сообщение, когда запускаю свой тест. Это не влияет на мои результаты теста, но предупреждение просто раздражает, чтобы видеть каждый раз.

Какой Gemfile мне нужно добавить эту версию и где она будет расположена?

gem list:
bigdecimal (1.1.0)
childprocess (0.3.9)
commonwatir (4.0.0)
ffi (1.8.1 x86-mingw32)
io-console (0.4.2, 0.3)
json (1.8.0, 1.7.7, 1.5.5)
mini_portile (0.5.0)
minitest (5.0.0, 2.5.1)
multi_json (1.7.3)
rake (10.1.0.beta.3, 10.0.4, 0.9.2.2)
rdoc (4.0.1, 3.9.5)
rubygems-update (2.0.3)
rubyzip (0.9.9)
selenium-webdriver (2.32.1)
watir-webdriver (0.6.4)
websocket (1.0.7)
win32-api (1.4.8 x86-mingw32)
win32-process (0.7.2)
windows-api (0.4.2)
windows-pr (1.2.2)

Ответ 1

Сообщение исходит от multi_json gem, и похоже, что это может быть ошибка. Я предлагаю следить за этим билетом GitHub.

Если сообщение слишком тревожное, вы можете понизить multi_json до версии 1.6.1, чтобы избавиться от него. (По крайней мере, это работает для меня.)

UPDATE:

Мне кажется, что корень проблемы заключается в том, что while multi_json хочет ограничить использование json и json_pure для конкретных версий, автор multi_json не использует gem в его коде для активации этих версий. (Похоже, он считает, что Bundler - единственный способ указать версии драгоценных камней, это не так.)

Так как multi_json попробует oj и yajl-ruby gems перед тем, как он попытается json, использование одного из них может быть лучшим обходным решением для всех. Таким образом, вы можете просто установить последний multi_json, а затем установить oj или yajl-ruby вместе с ним.

Ответ 2

Попробуйте следующее:

gem update --system 
gem update

Ответ 3

Перейдите на свой путь установки Ruby, например, C:\Ruby192\lib\ruby\1.9.1\json

Откройте файл version.rb и обновите деталь версии, как показано ниже: VERSION = '1.7.7'

Ответ 4

Попробуйте выполнить тесты с помощью команды bundle exec. Это заставит вашу среду использовать драгоценные камни в Gemfile.lock.