なぜbundleはJSONgemをインストールしないのですか?


82

を実行しようとすると、次のエラーが発生します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.

エンコーディングエラーを削除するためにRuby2.1.0にアップグレードするよりも、このデプロイメントが機能していたことに注意することが重要かもしれません。ローカルでアップグレードしましたが、問題なく動作しました。私が走ったrvm install 2.1.0し、rvm use 2.1.0その後、私の変更.ruby-versionこのRubyのアップグレードを反映するためにファイルを。

このbundle installコマンドはローカルで機能しますが、宛先サーバーにSSHで接続してこのコマンドを実行すると、上記と同じエラーが発生します。

実行するgem listと、宝石のリストにこれが表示されます。

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

推奨されるソリューションをgem install json -v '1.8.1'ローカルおよび宛先サーバーで試してみると、次の出力が得られます。

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

それで、宝石がインストールされているように見えますよね?なんでこんなことが起こっているの?どうすればこれを解決できますか?どんな助けでも大歓迎です。


bundle show jsonがあなたに与えますか?
user2503775 2014年

gem json, '1.8.1'Gemfileに追加
user2503775

残念ながら、gemfileにgem json、「1.8.1」があります
Thomas

bundle show json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
Thomas

6
sudo apt-get install ruby-devUbuntuで必要でした。
e9t 2016年

回答:


73
$ bundle update json
$ bundle install

2
これはRuby2.4.0で私のためにそれをしました!
風車2017

rbenv ruby​​ 2.4.1でも動作します(debian / ubuntu)
Aleksey Deryagin 2017

これは私にもうまくいきました。Ruby2.4.0ハイシエラ。ありがとうございました!
Robert_T_Taylor 2017年

Rubyバージョン2.4.2p198でも動作しました。ありがとう。
fatihturan

受け入れられた答えはうまくいかなかったが、私はそれが私のために働いたので、私はこの答えを賛成した。@Robert_T_Taylorのように、私はこれをmacOS HighSierraで実行しました。
スコットローレンス

68

それで、これについて半日後、そして私の質問を投稿した直後に、私は答えを見つけました。Bundler 1.5.0には、ここで参照されているデフォルトのgemを認識しないというバグがあります。

解決策は、を使用してバンドラー1.5.1に更新することでした。 gem install bundler -v '= 1.5.1'


10
バンドラーを更新した後でも同じ問題gem install json -v '1.8.1'が発生しました。更新後に実行すると、エラーメッセージが修正されました。
ジェイソンデニー2014

5
gem install json -v '1.8.1'続いてbundle package私のためにトリックをしました
Obie 2014年

私にいくつかの誓いの言葉を保存しました。これをありがとう!
ナマズ2014

1
bundlerはこれらのgemをインストールすることになっていないのですか?なぜgemを手動でインストールする必要があるのか​​わかりません。bundler.io/rationale.htmlBundlerバージョン1.7.11を使用しています
Snowcrash

2
私はバンドラーバージョン1.14.6を使用していますが、このエラーも発生します
Catfish


41

MacOS Sierraを使用していて、rubyバージョンが2.4.0の場合、rubyバージョンはjson1.8.3と互換性がありません。

Gemfileに次の行を追加してみてください。

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

これは私のために働きます!


ありがとう、それは私に多くの欲求不満を救いました!
エシェロン2017年

32

この問題を解決するには、次のコマンドを実行するだけです。

bundle update

それはあなたのバンドラーのバージョンを更新します。次に、以下を実行します。

bundle install

あなたの問題は解決されます。解決策はここでよく説明されています


1
+1本当に役に立ち、私を動けなくしました。その後bundle update、インストールはうまくいきました。クリーンなソリューションをありがとうございます。
twknab 2017年

3
bundle updateすべての宝石を更新します。gem update bundlerバンドラーを更新します。
eebbesen 2018

20

私はここで解決策を見つけました。jsonバージョン1.8.1とruby2.2.3に問題があるため、json1.8.3バージョンをインストールします。

gem install json -v1.8.3

1
これは、json gemの複数の悪いバージョンにわたるOSX、Ubuntuで私にとって素晴らしく機能しました。あるケースでは、ロックファイルを削除して最初から再構築する必要がありました。gitrmGemfile.lock bundle install
fuzzygroup 2016年

2
正常に動作しました。まず、を削除してGemfile.lockから実行するだけbundle installです。
alexventuraio 2016年

12

試してみてください

$ sudo gem install json -v '1.8.2'

私の場合(Ubuntu 14.04)は直接機能せず、これを行う必要がありました。

$ sudo apt-get install ruby-dev

その後、gemをインストールして続行できます。次の方法で修正されたもう1つの問題がありました。

$ sudo apt-get install libsqlite3-dev

願っています。


9

すでに新しいバージョンのバンドラーを使用しているために、推奨される回答が役に立たなかった場合。私のために働いた解決策を試してみてください。

ベンダーフォルダ内のすべてを削除します。gemfileに行を追加します

gem 'json', '1.8.0'

次に、-を実行しbundle update jsonます。

1.8.1の問題のようですので、1.8.0に戻るとうまくいきました。


Ruby2.0.0から2.2.4にアップグレードするときに機能しました。
Loubot 2016

1
すべてを削除する必要はありません。「バンドル更新json」で十分です。
Joffrey Baratheon 2016

1
使用gem 'json', '1.8.6'は私のために働いた。あなたはそれを試してみたいかもしれません。
etagwerker 2017年

7

SinatraとPostgresql(activerecordを介して)を使用して、rvm'd ruby​​ 2.1で実行しているローカル開発ボックス(OSX 10.6)でプロジェクトを実行しようとしたときに、このエラーが発生しました。私はここで私の答えを見つけました:https//github.com/wayneeseguin/rvm/issues/2511

私の正確な問題(ログエントリの最初のブロックの後):

gemのネイティブ拡張機能を構築しようとするとエラーも発生します

答え

rvm再インストール2.1.0--disable-binary

説明

OSXにはパッケージマネージャーがないため、すべてのライブラリをユーザーが手動でインストールする必要があります。これにより、バイナリを動的にリンクすることは事実上不可能になります。また、(疑似)静的にリンクされたバイナリに問題があります。

完全を期すために、最初にrvm(rvm get head)を更新するのを忘れて--disable-binaryいたため、他のエラーが発生しましたが、一度更新するとフラグが必要になりました。


ソリューションで次のエラーが発生します:「バージョン「2.1.0」があいまいです
。Rubyの

ruby 2.1.0がないか、rvmを介して複数のバージョンがインストールされていない可能性があります。を実行rvm listすると、現在のバージョンが表示されます。2.1.0上記の代わりに完全な文字列(例:ruby-2.0.0-p451)を使用します。
マティアス

6

bundle update json。通り抜けるのを手伝った。


1
json 1.8.6(以前は1.8.3)が正常にインストールされました
Simon Liu

5

取得gem install jsonしただけでなく、別の方法でjson gemをインストールしようとすると、それを調べて、bundle installERROR: Failed to build gem native extension.

    apt-get install ruby-dev

トリックをしました


すごい-あなたは私の日を救った!
unkas 2018

3

OS Xの場合は、coreutilsがあることを確認してください

$ brew install coreutils
$ bundle

1
「警告:coreutils 8.32はすでにインストールされており、最新です」という警告が表示されましたが、これでうまくいきました。
Paul Verschoor

2

これは、ruby2.xとともにインストールされたデフォルトのgemを認識しないBundlerのバグのようです。最新バージョンのバンドラー(1.5.3)でも問題が発生しました。

1つの解決策は、デフォルトのgemspecディレクトリからjson-1.8.1.gemspecを削除することです。

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

これを行った後、バンドラーは宝石を見つけるのに問題がないはずです。私はchrubyを使用していることに注意してください。他のルビーマネージャーを使用している場合は、それに応じてパスを更新する必要があります。


うん、jsonバンドルの問題を解決するのは簡単です。ありがとう
hainguyen 2015

2

Xcode用にダウンロードすることでCヘッダーの解決策が欠けていました。これが最善の方法です。

xcode-select --install

それが役に立てば幸い。


2

バンドルはjson-v '1.8.1'のインストールに失敗し、Gemfile.lockを削除してバンドルを再度実行すると、この問題が解決しました。


1

jsonの最新バージョンをインストールしました:

gem install json

次に、Gemfile.lockから行json(1.8.1)を削除し、

bundle install

そして、Gemfile.lockファイルはエラーなしでjson(1.8.3)を使用します


1
バンドルアップデートを実行するだけで、この問題は解決しました...つまり、新しいJSONgemビルドを使用しました。
フランシスマロック2017


0

私にとって、前述の回答のいくつかは理解の観点からは役に立ちましたが、それらは私の問題を解決しませんでした。

だから、これは私が問題を解決するためにしたことです。

  • json(2.0.2)を更新するようにgemfile.lockを変更しました(以前は1.8.3でした
  • インストールされているBundlerのバージョンを確認しBundler -vます(コマンド)。バージョン1.12.5をインストールしました
  • バンドラーバージョン1.11.2をインストールします(を使用gem install bundler -v '1.11.2'
  • 次に、バンドルインストールを実行します

0

macOS Sierraの場合:

v1.15.3Rails(v4.2)プロジェクトでbundle()を使用したときに、このエラーが発生しました。私のためのソリューションですgem uninstall bundler -v '1.15.3'gem install bundler -v '1.14.6'

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.