您正在使用json gem的旧版本或stdlib版本

时间:2013-05-14 12:52:03

标签: watir watir-webdriver

我已经看到几天前在另一个帖子中提到的以下问题和其他问题,但是这个问题的解决方案(对我而言)似乎没有得到解决。

我最近在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'

当我创建一个在Windows XP上运行的全新Ruby 1.9.3-p392环境时,这个问题仍在继续(请不要问)。令我困惑的是,即使我安装了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 个答案:

答案 0 :(得分:10)

消息来自multi_json gem,似乎它可能是一个bug。 I suggest keeping an eye on this GitHub ticket.

如果邮件过于令人沮丧,您可以将multi_json降级到版本1.6.1以摆脱它。 (至少这对我有用。)

<强>更新

在我看来,问题的根源在于multi_json想要将jsonjson_pure宝石的使用限制为特定版本,{{1他的代码中没有使用gem方法来激活这些版本。 (听起来他认为Bundler是指定宝石版本的唯一方法;它不是。)

由于multi_json会在尝试multi_json之前尝试ojyajl-ruby宝石,因此使用其中之一可能是最好的解决方法。因此,您只需安装最新的json,然后随之安装multi_jsonoj

答案 1 :(得分:5)

试试这个:

gem update --system 
gem update

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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