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'

この問題は、Windows XP で実行する完全に新しい Ruby 1.9.3-p392 環境を作成したときにも続きました (聞かないでください)。私を混乱させているのは、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)
4

4 に答える 4

10

メッセージはmulti_json宝石から来ており、バグの可能性があるようです。この GitHub チケットに注目することをお勧めします。

メッセージがあまりにも不快な場合は、multi_jsonバージョン 1.6.1 にダウングレードして削除できます。(少なくともこれは私にとってはうまくいきます。)

アップデート:

問題の根本は、とgemmulti_jsonの使用を特定のバージョンに制限したいのに、 の作成者がコード内のメソッドを使用してこれらのバージョンをアクティブ化していないことにあるように私には思えます。(彼は、Bundler が gem のバージョンを指定する唯一の方法だと考えているようですが、そうではありません。)jsonjson_puremulti_jsongem

multi_jsonは を試す前にojyajl-rubygemを試すためjson、それらのいずれかを使用することが最善の回避策である可能性があります。したがって、最新のものをインストールしてmulti_jsonから、どちらかojまたはyajl-rubyそれと一緒にインストールできます。

于 2013-05-16T01:21:33.943 に答える
5

これを試して:

gem update --system 
gem update
于 2013-05-14T21:38:04.147 に答える
0

コマンドでテストを実行してみてくださいbundle exec。これにより、環境で の gem が強制的に使用されGemfile.lockます。

于 2013-05-15T10:54:39.647 に答える