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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

3757閲覧

bundle install と gem install 違い

Koyyyyyy

総合スコア55

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2018/03/29 09:06

bundle installとgem installの違いがよくわかりません。
結局bundle install したものもローカル環境にダウンロードされるのなら別にgem installを使えばいいのではないかと思います。ただ一つづつgem installするのはめんどくさいですが..

つまりbundle installはgem を一括ダウンロードするためのツールという認識でいいでしょうか。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Bundler はプロジェクトの Gemfile に従って gem を管理するものです。

gem のインストールだけを考えれば,おおむね「bundle コマンドは一括で,gem コマンドはひとつずつ」と言えなくもないですが,そればかりでもありません。

bundle install は,Gemfile はもちろんですが,Gemfile.lock にも縛られます。
たとえば Gemfile に

rb

1gem "foo", "~> 2.1.3"

と書いてあったとします。
foo gem の 2.1.3 以上,2.2.0 未満,という指定ですよね。
ある日 bundle install したところ,2.1.x の最新版である 2.1.4 がインストールされたとします。
すると Gemfile.lock に,「foo は 2.1.4」という情報が書かれます。

後日,2.1.9 がリリースされたとして,再び bundle install しても 2.1.9 はインストールされません。Gemfile.lock に 2.1.4 と書いてあるからです。
Gemfile.lock を削除して bundle install するか,あるいは bundle update すると 2.1.9 がインストールされます。

というような動作なんですよ。

投稿2018/03/29 11:36

scivola

総合スコア2108

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Koyyyyyy

2018/03/29 11:41

とてもわかりやすいご説明ありがとうございます!!! 一つ気になるのですがgemはローカルに保存されるじゃないですか。 つまりbundle installしようがgem installしようが最終的にはローカルに保存されるのですよね? そうすると以前他のrailsアプリケーションでbundle installをしたgemを違うアプリケーショんで使うときにもう一度bundle install しないといけない理由がわかりません。gem 'rails'とかgem 'pry-rails' とか
scivola

2018/03/29 13:43

プロジェクト A, B で使う gem が同じ(Gemfile が共通な)場合で,A のほうで bundle install してあれば,B のほうでやる必要はありません。 (B のほうで bundle install すれば B の Gemfile.lock が生成されますが,やらなくてもどうせアプリを動かしたときに生成されます。) なお,bundle install に --path オプションを付けると gem のインストール場所が指定できるので,たとえば Rails アプリの vendor/bundle ディレクトリーに gem を収めることもできます。 このようなやり方の場合はアプリごとに bundle install することになりますね。
asm

2018/03/29 14:01

--pathなしにシステムグローバルにインストールもできない事はないんですが bundlerのメリットの1つであるバージョンの固定ができません。 結局プロジェクト毎にbundle installして利用するライブラリ・バージョンを一意にした方が安定するのです。
Koyyyyyy

2018/03/30 05:21

scivolaさん asmさんありがとうございます!!!
guest

0

bundler公式documentより

When we run bundle install, rspec will be installed for this library and any other library we use with Bundler, but not for the system. This is an important distinction to make: any gem installed by Bundler will not muck about with gems installed by gem install. It is effectively a sandboxed environment. It is best practice to use Bundler to manage our gems so that we do not have gem version conflicts.

投稿2018/04/08 06:12

Koyyyyyy

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問