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

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

ただいまの
回答率

88.59%

gemがインストールできない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,058

marokak

score 34

gemのインストールでエラーが発生してしまいます。
すみませんがアドバイスお願いします。

背景:RailsをAWSにデプロイ
参考:AWS(EC2)にRailsのWebアプリをデプロイする方法(Githubからクローン)

$ gem install bundler
$ bundle init
$ vim Gemfile (railsのバージョンを記載。gem "rails", '5.0.1'


次にvendor/bundle にgemを試みるとエラーとなります。

$ bundle install --path vendor/bundle --jobs=4
[DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'vendor/bundle'`, and stop using this flag
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 5.0.1) was resolved to 5.0.1, which depends on
      bundler (< 2.0, >= 1.3.0)

  Current Bundler version:
    bundler (2.1.2)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

Could not find gem 'bundler (< 2.0, >= 1.3.0)', which is required by gem 'rails (=
5.0.1)', in any of the sources.


試しに2.1.4をインストールするとアップデートを勧められ、

$ gem install bundler:2.1.4
$ bundle install --path vendor/bundle --jobs=4
[DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'vendor/bundle'`, and stop using this flag
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 5.0.1) was resolved to 5.0.1, which depends on
      bundler (< 2.0, >= 1.3.0)

  Current Bundler version:
    bundler (2.1.4)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

Could not find gem 'bundler (< 2.0, >= 1.3.0)', which is required by gem 'rails (=
5.0.1)', in any of the sources.


「gem install bundler」を実行してから改めて「bundle install --path vendor/bundle --jobs=4」を実行すると「--path」の代わりに「bundle config set path 'vendor/bundle'」と言われるので使ってみると、

$ bundle config set path 'vendor/bundle'
Your application has set path to "vendor/bundle". This will override the global value you are currently setting
$ bundle config
Settings are listed in order of priority. The top value will be used.
path
Set for your local app (/var/www/projects/.bundle/config): "vendor/bundle"
Set for the current user (/home/test_user/.bundle/config): "vendor/bundle"

jobs
Set for your local app (/var/www/projects/.bundle/config): 4


bundle insallで毎回vendor/bundleにインストールされるようなので、次に進みます。

次にrailsのバージョンを見ると「bundle install」でgem executablesをインストールしろと言われます。

$ bundle exec rails -v
bundler: command not found: rails
Install missing gem executables with `bundle install`


「gem executables」とはいったい何のことでしょうか?ググりましたが分かりませんでした。

追記;
「gem install rails」でrailsをインストールしようとするとRubyが古いと言われたので、2.5.1を入れたらrailsがインストールできました。
ただし今度は「$ bundle install --path vendor/bundle」を試みると、bundleは2.5.0しか使えない、とでました。

$ rbenv global 2.5.0
$ rbenv rehash
で使用rubyを2.5.0に設定しようとしても2.5.1から変わらず、仕方なく2.5.1をアンインストールして「rbenv global 2.5.0」で2.5.0に設定して「$ bundle install --path vendor/bundle」を試みたら、
rbenv: version `ruby-2.5.1' is not installed (set by /var/www/projects/***/.ruby-version)と言われる始末です。
vendor/bundle にgemをインストールする方法はないものでしょうか。。。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2020/01/11 11:22

    URLは https://teratail.com/help/question-tips#questionTips3-7 の [リンク] で [リンク先の概要](http...) に修正してください。

    キャンセル

  • marokak

    2020/01/11 11:54

    ご指摘ありがとうございます。リンク修正しました。

    キャンセル

回答 1

checkベストアンサー

0

bundler (< 2.0, >= 1.3.0)

をインストールしろということでは?2.1.4じゃなくて。

「gem executables」とはいったい何のことでしょうか?

execute は「実行する」、executables は「実行可能なもの」という意味です。
つまり、

bundler: command not found: rails
Install missing gem executables with bundle install

railsコマンドが無いので、railsをインストールしろという意味です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/01/11 14:41

    回答ありがとうございます。
    railsコマンドがないので、gemをインストールしろ、ということかと思ってました。
    railsはインストールできたのですが、次の問題が出てきてしまいました。
    詳細は上に追記しましたので、よろしければ見ていただけると幸いです。

    キャンセル

  • 2020/01/11 14:50 編集

    > railsコマンドがないので、gemをインストールしろ、ということかと思ってました。

    railsという名前の実行可能ファイル(=コマンド)を持つ gem、
    つまり railsというgem をインストールしろということです。

    > で使用rubyを2.5.0に設定しようとしても2.5.1から変わらず、仕方なく2.5.1をアンインストールして

    原因を突き止めず、適当な対応をしてはいけません。
    そのディレクトリでlocalで2.5.1を設定したのに忘れているのでは?

    キャンセル

  • 2020/01/13 08:08

    アドバイスありがとうございます。
    ご忠告通り、2.5.1のままで解決方法を探しました。

    $ bundle install --path vendor/bundle
    rbenv: bundle: command not found
    The `bundle' command exists in these Ruby versions:
    2.3.1
    2.4.4
    2.5.0
    bundleがないと出たので、
    $ gem install bundler
    でインストール。

    次に再度試すと別のエラーメッセージが。
    $ bundle install --path vendor/bundle
    Traceback (most recent call last):
    2: from /home/test_user/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
    1: from /home/test_user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `a
    ctivate_bin_path'
    /home/test_user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe
    ': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

    ググってみると「Gemfile.lockに記載されているBUNDLE_WITHのバージョンと、bundlerのバージョンが異なるため」とあったので、Gemfile.lockの「BUNDLED WITH」部分を使用バージョンに書き換えると、コマンド($ bundle install --path vendor/bundle)が実行できました。
    参考:https://www.yokoyan.net/entry/2019/01/11/181500

    ありがとうございました!

    キャンセル

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

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

関連した質問

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