2013-05-14 18 views
11

kullanıyorsunuz Başka bir iş parçacığında, diğer sorunlar arasında birkaç gün önce bahsettiğim aşağıdaki sorunu gördüm, ancak bu sorunun çözümü (benim için) ele alınmadı .Bir eski veya stdlib sürümü json gem

Geçenlerde benim Ruby 1.9.2-p290 çevre üzerinde bir test koştum ve bir test komut dosyası çalıştırdığınızda aşağıdaki hata ile sunuldu: Ben tamamen taze Ruby 1.9 oluştururken bu sorun devam

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' 

.3-p392 ortamı, Windows XP'de çalışıyor (sorma). Beni şaşırtan şey ise, 1.7.7 veya 1.8.0 yüklü json'um olsa bile (gem listesi aşağıya yapıştırılır), testimi çalıştırdığımda hala bu mesajı alıyorum. Test sonuçlarımı gerçekten etkilemiyor, ancak uyarı her seferinde görmek için can sıkıcı.

Bu Gemamile hangi Gemfile eklenmeli ve nereye yerleştirilmeli?

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) 
+0

: Ben Ruby 1.9.3 aynı davranışı gördük -p392. Ayrıca, bu uyarının Bundler'ın kullanılmadığı ortamlarda bile ortaya çıktığını unutmayın, bu nedenle Gemfile'ı düzenleme öneri geçerli değildir. – L2G

+1

gemfile ile ilgili öneri açıkça 'herkes herkesin kullandığı' ' –

+0

veya' 'kesinlikle herkes rvm kullanıyor ...' 'ya da' 'herkesin kullandığı Linux' '' 'ya da' 'herkesin anlayacağı bir terminal kullanıyor. ANSI kaçış kodları "... _Sigh._ – L2G

cevap

10

İleti, multi_json geminden geliyor ve bir hata olabileceği düşünülüyor.

İleti çok sıkıcıysa, kurtulmak için multi_json sürümünü 1.6.1 sürümüne yükseltebilirsiniz. (En azından bu benim için çalışıyor.)

GÜNCELLEME: Öyle sorunun köküne gibi görünüyor bana

o multi_json belirli sürümlerine json ve json_pure taşlar kullanımını sınırlamak isterken, multi_json'un yazarı, bu sürümleri etkinleştirmek için kodunda gem yöntemini kullanmıyor. o json çalışmadan önce

multi_json yana oj ve yajl-ruby taşlar çalışacağız, en iyi çözüm olabilir bunlardan birini kullanarak; (öyle değil mi o Bundler taşlar versiyonlarını belirtmek için tek yol olduğunu düşünüyor gibi geliyor.) hepsinden. Bu yüzden en son multi_json'u yükleyebilir ve ardından birlikte oj veya yajl-ruby'u yükleyebilirsiniz.

+1

Gerçekten de, Watir Google Grubu'ndaki bir yayın, multi_json'u 1,7'ye düşürmeyi önerdi.2; Bu kesinlikle benim için çalıştı. (http://groups.google.com/group/watir-general/browse_thread/thread/46ef4881fcd71e35) – GJHmf

+0

"(Bundler'ın mücevherlerin sürümlerini belirtmenin tek yolu olduğunu düşünüyor gibi görünüyor, öyle değil.)" + Bunun için 1 .. Bir gemfile değiştirmeye göre hata mesajındaki önerisi, bu tür düşünme daha fazla kanıt. –

+0

@GJHmf bu sizin için işe yararsa, neden cevabı kabul etmiyorsunuz? –

5

bu deneyin:

gem update --system 
gem update 
+0

Bu harika yayınladığınız için teşekkürler! –

0

bundle exec komutla testleri çalıştırmayı deneyin. Bu, ortamınızı Gemfile.lock'daki mücevherleri kullanmaya zorlayacaktır.

1
örneğin sizin Yakut yükleme yolu, hiç

Git, C:\Ruby192\lib\ruby\1.9.1\json

Açık version.rb dosyası ve feryat gösterilen sürüm detay güncelleyin: Kenara VERSION = '1.7.7'

İlgili konular