11

几天前,我在另一个线程中看到了以下问题以及其他问题,但是(对我而言)这个问题的解决方案似乎没有得到解决。

我最近在我的 Ruby 1.9.2-p290 环境上运行了一个测试,当我运行一个测试脚本时出现以下错误:

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(宝石列表粘贴在下面),我在运行测试时仍然会收到此消息。它并没有真正影响我的测试结果,但是每次看到警告都很烦人。

我需要将此版本添加到哪个 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)
4

4 回答 4

10

该消息来自multi_jsongem,似乎它可能是一个错误。我建议密切关注这个 GitHub 票证。

如果消息太烦人,可以降级multi_json到 1.6.1 版本摆脱它。(至少这对我有用。)

更新:

在我看来,问题的根源在于,虽然multi_json希望将其对jsonjson_puregems 的使用限制在特定版本,但作者multi_json并没有在他的代码中使用该gem方法来激活这些版本。(听起来他认为 Bundler 是指定 gems 版本的唯一方法;它不是。)

由于multi_json将在尝试之前尝试ojand gems,因此使用其中之一可能是最好的解决方法。因此,您可以只安装最新版本,然后安装其中一个或与其一起安装。yajl-rubyjsonmulti_jsonojyajl-ruby

于 2013-05-16T01:21:33.943 回答
5

尝试这个:

gem update --system 
gem update
于 2013-05-14T21:38:04.147 回答
1

转到您的 Ruby 安装路径,例如, C:\Ruby192\lib\ruby\1.9.1\json

打开version.rb文件并更新版本详细信息,如下所示: VERSION = '1.7.7'

于 2013-05-17T06:01:10.520 回答
0

尝试使用bundle exec命令运行测试。这将强制您的环境使用Gemfile.lock.

于 2013-05-15T10:54:39.647 回答