Bundler neden JSON gem'i yüklemiyor?


82

Çalıştırmaya çalışırken aşağıdaki hatayı alıyorum cap production deploy.

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

Bir kodlama hatasını ortadan kaldırmak için Ruby 2.1.0'a yükseltmeme kıyasla bu dağıtımın işe yaradığına dikkat etmek önemli olabilir. İyi çalışan yerel olarak yükselttim. Çalıştırdım rvm install 2.1.0ve rvm use 2.1.0dosyamı .ruby-versionbu Ruby yükseltmesini yansıtacak şekilde değiştirdim .

bundle installKomut lokal olarak çalışır, ancak ben hedef sunucu üzerine ssh ve bu komutu çalıştırdığınızda aynı yukarıdaki hatayı üretir.

Eğer koşarsam gem listbunu mücevher listesinde görebilirim.

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...

gem install json -v '1.8.1'Yerel olarak önerilen çözümü denersem ve hedef sunucuda aşağıdaki çıktıyı alırım:

Building native extensions.  This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed

Öyleyse mücevher kurulu görünüyor, değil mi? Bu neden oluyor? Bunu Nasıl Çözebilirim? Herhangi bir yardım çok takdir edilecektir.


Sana ne bundle show jsonverir?
user2503775

gem json, '1.8.1'Gemfile'a Ekle
user2503775

Gem dosyamda zaten maalesef gem json, '1.8.1' var
Thomas

paket gösterisi json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
Thomas

6
Ubuntu'ma ihtiyacım vardı sudo apt-get install ruby-dev.
e9t

Yanıtlar:


74
$ bundle update json
$ bundle install

2
Bunu Ruby 2.4.0'da benim için yaptı!
Windmill

Çok rbenv yakut 2.4.1 (debian / ubuntu) için İşleri
Aleksey Deryagin

Bu benim için de çalıştı. Ruby 2.4.0 Yüksek Sierra. Teşekkür ederim!
Robert_T_Taylor

Ruby 2.4.2p198 sürümünde benim için de çalıştı. Teşekkürler.
fatihturan

Bu yanıta olumlu oy verdim çünkü benim için işe yaradı, ancak kabul edilen yanıt olmadı. @Robert_T_Taylor gibi, bunu macOS High Sierra'da çalıştırdım.
Scott Lawrence

68

Bu yüzden yarım gün sonra ve sorumu gönderdikten hemen sonra cevabı buldum. Bundler 1.5.0 olarak varsayılan taşlar tanımadığı bir hata var burada başvurulan

Çözüm, paketleyici 1.5.1'e güncelleme yapmaktı. gem install bundler -v '= 1.5.1'


10
Paketleyiciyi güncelledikten sonra bile aynı sorunu yaşadım, gem install json -v '1.8.1'güncellemeden sonra bir yapmak hata mesajını benim için düzeltti.
Jason Denney

5
gem install json -v '1.8.1'ardından bundle packagebenim için hile yaptı
Obie

Bana birkaç küfür kurtardı. Bunun için teşekkürler!
Yayın balığı

1
Bundler'ın bu mücevherleri sizin için yüklemesi gerekmiyor mu? Mücevherleri neden manuel olarak kurmanız gerektiğini anlamıyorum. bundler.io/rationale.html Bundler 1.7.11 sürümünü kullanıyorum
Snowcrash

2
Paketleyici 1.14.6 sürümünü kullanıyorum ve bu hatayı da alıyorum
Catfish

49

Bu komutu çalıştırın, sonra her şey yoluna girecek

sudo apt-get install libgmp-dev

Benim için de çalıştı :) Teşekkürler!
Deepak Kumar Padhy

@Imran Bunu bir linux terminaline koymalısınız. Sanırım pencereleri çalıştırıyorsun?
Rcordoval

41

MacOS Sierra'da iseniz ve Ruby sürümünüz 2.4.0 ise. Ruby sürümü json 1.8.3 ile uyumlu değildir.

Bu satırı Gemfile'ınıza eklemeyi deneyebilirsiniz:

gem 'json', github: 'flori/json', branch: 'v1.8'

Bu benim için çalışıyor!


Teşekkür ederim, bu beni çok fazla hayal kırıklığından kurtardı!
Echelon

33

Bu sorunu çözmek için şunu çalıştırın:

bundle update

Paketleyicinizin sürümünü güncelleyecektir. O zaman koş:

bundle install

Problemin çözülecek. Çözüm burada iyi açıklanmıştır .


1
+1 Gerçekten yardımcı oldu ve işimi çözdü. Daha sonra bundle updatekurulum harika çalıştı. Temiz çözüm için teşekkürler.
twknab

3
bundle updatetüm değerli taşlarınızı güncelleyecektir. gem update bundlerpaketleyiciyi güncelleyecek.
eebbesen

20

Çözümü burada buldum . Json sürüm 1.8.1 ve ruby ​​2.2.3 ile ilgili bir sorun var, bu yüzden json 1.8.3 sürümünü yükleyin.

gem install json -v1.8.3

1
Bu, OSX, Ubuntu'da json gem'in birçok kötü sürümünde benim için fevkalade çalıştı. Bir durumda kilit dosyasını silmem ve sıfırdan yeniden oluşturmam gerekti: git rm Gemfile.lock bundle install
fuzzygroup

2
İyi çalıştı, her şeyden önce siliyorum Gemfile.lockve sonra sadece çalıştır bundle installve hepsi bu.
alexventuraio

12

Denemelisin

$ sudo gem install json -v '1.8.2'

benim durumumda (Ubuntu 14.04) doğrudan çalışmadı ve bunu yapmak zorunda kaldım:

$ sudo apt-get install ruby-dev

ve sonra mücevheri kurup devam edebilirim. Aşağıdakiler tarafından düzeltilen bir sorun daha vardı:

$ sudo apt-get install libsqlite3-dev

Umarım yardımcı olur.


9

Önerilen yanıt, paketleyicinin daha yeni bir sürümünü kullandığınız için yardımcı olmadıysa. Benim için işe yarayan çözümü deneyin.

Satıcı klasörünüzdeki her şeyi silin. Gemfile dosyanıza bir satır ekleyin

gem 'json', '1.8.0'

Ardından çalıştırın - bundle update json.

1.8.1 ile ilgili bir sorun gibi görünüyor, bu yüzden 1.8.0'a geri dönmek benim için hile yaptı.


Ruby 2.0.0'dan 2.2.4'e yükseltilirken çalıştı.
Loubot

1
Her şeyi silmenize gerek yok. "paket güncelleme json" yeterli.
Joffrey Baratheon

1
Kullanma gem 'json', '1.8.6'benim için çalıştı. Bunu denemek isteyebilirsin.
etagwerker

7

Bu hatayla yerel dev kutumda (OSX 10.6) Sinatra ve Postgresql (activerecord aracılığıyla) kullanarak rvm'd ruby ​​2.1 üzerinde çalışan bir proje almaya çalışırken karşılaştım. Cevabımı burada buldum: https://github.com/wayneeseguin/rvm/issues/2511

Benim tam sorun (günlük girdilerinin ilk bloktan sonra):

Değerli taşlar için yerel uzantılar oluşturmaya çalışırken de bir hata alıyorum

cevap :

rvm 2.1.0 yeniden yükleme --disable-binary

açıklama :

OSX'in bir paket yöneticisi yoktur, bu nedenle tüm kitaplıkların kullanıcı tarafından manuel olarak yüklenmesi gerekir, bu, ikili dosyayı dinamik olarak bağlamayı neredeyse imkansız kılar ve görebileceğiniz gibi (sözde) statik olarak bağlı ikili dosyada sorunlar vardır.

Eksiksizlik uğruna, ilk olarak rvm ( rvm get head) ' yi güncellemeyi unutmuştum , bu da bazı başka hatalara yol açtı , ancak --disable-binarybunu yaptıktan sonra yine de bayrağa ihtiyacım vardı.


Çözümünüzle şu hatayı alın: "Sürüm '2.1.0' belirsiz. Ruby uygulamasını / sürümünü seçemezsiniz, lütfen daha spesifik olun. Bilinmeyen paket yeniden
yüklenemiyor

Ruby 2.1.0'a veya rvm aracılığıyla kurulu birden fazla sürümünüz olmayabilir. Çalıştırın rvm listve mevcut sürümünüzün ne olduğunu göreceksiniz. 2.1.0Yukarıda belirtilenler yerine tam dizeyi (örn. Ruby-2.0.0-p451) kullanın .
Matthias

6

bundle update json. Geçmeye yardım etti.


1
1.8.6 json başarıyla yüklendi (1.8.3'tü)
Simon Liu

5

Json gem'i gem install jsonsadece bundle installaldığımdan ayrı kullanarak kurmaya çalıştığımda ERROR: Failed to build gem native extension., bunu kullanarak buldum

    apt-get install ruby-dev

hile yaptım


harika - günümü kurtardın!
Unkas

3

OS X marka için emin olan coreutils

$ brew install coreutils
$ bundle

1
"Uyarı: coreutils 8.32 zaten kurulu ve güncel" uyarısı alsam da, hile yaptı.
Paul Verschoor

2

Bu, Bundler'da Ruby 2.x ile birlikte kurulan varsayılan mücevherleri tanımayan bir hata gibi görünüyor. Bundler'ın son sürümünde (1.5.3) bile sorunu hala yaşadım.

Çözümlerden biri, json-1.8.1.gemspec'i varsayılan gemspec dizininden silmektir.

rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec

Bunu yaptıktan sonra, paketleyicinin mücevheri bulmada sorun yaşamaması gerekir. Chruby kullandığımı unutmayın. Başka bir Ruby yöneticisi kullanıyorsanız, yolunuzu buna göre güncellemeniz gerekir.


evet, json paketiyle bir sorunu çözmek çok kolay. Teşekkür ederim
hainguyen

2

Eksik C başlıkları çözümü Xcode için indirmekti, bu en iyi yol.

xcode-select --install

Umarım yardımcı olur.


2

Paket, json -v '1.8.1'i yükleyemiyordu ve Gemfile.lock'umu silip çalıştırmak paketi benim için tekrar çözdü.


1

Json'un en son sürümünü yükledim:

gem install json

Daha sonra Gemfile.lock'tan json (1.8.1) satırını sildi ve

bundle install

Ve sonra Gemfile.lock dosyası json (1.8.3) 'ü hatasız kullanıyor


1
Sadece bir paket güncellemesi çalıştırmak benim için bu sorunu çözdü ... başka bir deyişle, daha yeni bir JSON gem yapısı kullanarak.
Francis Malloch

0

Rvm ile ruby ​​versiyonunu 1.9'dan 2.2'ye değiştirin benim için işi yaptı


0

Benim için, daha önce bahsedilen cevaplardan bazıları anlayış açısından yardımcı oldu, ancak bunlar sorunumu çözmedi.

Yani sorunu çözmek için yaptığım şey buydu.

  • Gemfile.lock, json'u (2.0.2) güncellemek için değiştirildi ( Daha önce 1.8.3'tü )
  • Yüklü Bundler sürümünü kontrol edin ( Bundler -vkomut). 1.12.5 sürümünü yükledim
  • Paketleyici 1.11.2 sürümünü yükleyin (kullanarak gem install bundler -v '1.11.2' )
  • Ardından paket yüklemeyi çalıştırın

0

MacOS Sierra için:

v1.15.3Rails ( v4.2) projesinde bundler ( ) kullandığımda bu hatayla karşılaştım . Benim için çözüm gem uninstall bundler -v '1.15.3've gem install bundler -v '1.14.6'.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.