質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

bundle installができず、bundle execコマンドが使えない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 2,055

score 6

railsで開発をしている者です。
bundle install ができなくなったため、解決方法をご教示いただきたいです。

環境
Rails 5.1.1
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
rbenv 1.1.1

問題点と現状の共有
bundle exec コマンドが使えなくなったため(原因不明)、
bundle installをするよう促されたのですが、上手くいかず。

bundleは1.16.1でプロジェクトを進めているのですが、
bundle installとコマンドを打つと、下記のようなエラーが出ます。
画像は、問題点のありそうな箇所を抜粋しました。
イメージ説明
イメージ説明

rbenv exec gem list | grep bundler
とコマンドを打つと

bundler (1.16.1)
capistrano-bundler (1.2.0)


となり、
bundle -vと打つと、
Bundler version 2.0.2
となります。

また、
which ruby とすると、
/ユーザー名/.rbenv/shims/ruby

which bundleとすると、
/usr/local/bin/bundle
となり、

調べてみると、この部分のパスの相違も問題なのかと思うのですが、
解決方法がわからず。

ちなみに、
sudo gem install bundler --version 1.16.1
とも試しましたが、解決には至りませんでした。

※rails s等のコマンドは使え、ローカルのサーバーは立ち上がります

簡単な解決方法があれば良いのですが、
もしなければ、一度開発環境をリセットするという手段も取れますので、
難しいようでしたら、そちらのアプローチをご教示いただけたらと存じます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

まずなによりも "rbenvで入れたRuby" と "brewかなにかで/usr/local/bin/に入ったRuby" と "元々システムに入っているRuby" と、そのどれを使いたいのか、どれを使っているのかということしっかり意識しましょう。


ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
rbenv 1.1.1 

とのことですがこのrubyはどうやって入れましたか?
なぜあなたは"自分が2.4.1を使っている"と認識しているのですか?

which gemはどこを指していますか?


which ruby とすると、 /ユーザー名/.rbenv/shims/ruby が出て(/Users/ユーザー名/.rbenv/shims/ruby の間違いだと思いますが)
which bundle とすると、/usr/local/bin/bundle が出ることから、以下の可能性があります。

  1. パスの設定の順番で、rbenv環境が/usr/local/binより優先されていて、rubyコマンドはrbenv環境を見ているが、どういう理由でかrbenv環境からbundleが消えた、またはそもそも作っていない
  2. パスの設定の順番で、/usr/local/binがrbenv環境より優先されていて、bundleコマンドは/usr/local/binを見ているが、どういう理由でか/usr/local/binからrubyが消えた
  3. パスの設定の順番で、rbenv環境が/usr/local/binより優先されていて、/usr/local/binのRubyにbundlerを入れたが、rbenv環境にはbundlerを入れていない(したがって質問の状況は正常そうなって当然

echo $PATHを実行してパスの順番を確認してください。
想像では、rbenv環境→/usr/local/bin→/usr/binの順番になっている可能性の方が高いと思います。


実際問題として、"rbenvで入れたRuby"を使うのがいいと思います。


rbenv versionsしてみてください。

system
2.3.? (set by /Users/ユーザ名/.rbenv/version)


というようなリストが出ると思います。(?はマイナーバージョンの数字です)

先頭に*が付いているのはなんでしょうか? それはあなたが思っている実際に使おうと思っているRubyですか?

"rbenvで入れたRuby"と"rbenvで指定したRuby"の区別を付けてください。


system に*が付いているようなら

rbenv global 2.3.?


として"rbenvでいれたRuby"を優先するようにしましょう。


rbenv rehashしてみてください。

"rbenvで入れたRuby"にgemコマンドやbundleコマンドがあるなら/Users/ユーザー名/.rbenv/shimsに仲立ちする実行ファイルができてbundleコマンドがrbenvで指定したRubyを実行するようになります。


"rbenvで入れたRuby"にgemコマンドがあってbundleコマンドがないなら

gem install bundler


しましょう。


むやみに環境を変化させるコマンドを実行しないでください。
まず自分の環境を把握するところから始めてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/03 12:35

    ご丁寧にありがとうございます。
    回答を確認する前に、自己解決しまして、
    bundleのPATHを変更したため、解決いたしました。

    今後、環境構築を実施する際は、
    回答を意識して進めるようにいたします。
    ありがとうございます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る