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

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

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

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

Ruby on Rails

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

Q&A

1回答

1834閲覧

Ruby on Railsのbundlerの使い方について

dongw

総合スコア119

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2017/03/07 16:19

Railsでアプリを作っています。
Bunlderの使い方が曖昧なため質問させてもらいます。

パターン1
rails new でアプリを作成
以後のrakeコマンドやrailsコマンドの先頭にbundle execを付ける

パターン2
bundle initでGemfile作成
bundle install --path vendor/bundle でパスを指定して(アプリ内のディレクトリ)railsをインストール
bundle exec rails new でその他のGemインストール
以後のrakeコマンドやrailsコマンドの先頭にbundle execを付ける

以下質問

1.番号リスト最初にアプリを作る時にこの2パターンがあると思うのですが、
パターン1とパターン2で作成する時にどういった違いが生まれてくるのでしょうか?
パッと見で、Gemfileの管理する場所が、システム共通とアプリのディレクトリの違いしか見受けられません。

2.パターン1の方法でアプリを作成する際、rails newをする時にbundle installが自動で実行されると思いますが、ここでのbundle installはシステム共通の所にGemfileがインストールされてしまうので以後bundle execコマンドを叩く必要はあるのでしょうか?

3,bundlerで管理しているアプリ作成時、うっかりbundle execコマンドを忘れてコマンドを叩いた場合、どんな不具合が起きるのでしょうか?また、どのコマンドでbundle execを忘れた時に一番被害が大きいのでしょうか?

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

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

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

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

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

guest

回答1

0

  1. 後者の方法では、システムワイドにRailsを入れなくてもRails環境を構築できる、というメリットがあります。「システムgemを増やしたくない・(権限などの関係で)増やせない」場面でも使えます。

  2. & 3. Linux系の場合、springといってRails本体をプレロードしておく仕組みがあるので、インストール法にかかわらずbin/railsbin/rakeを使うのが正解です。ただし、railsコマンドはどのように実行しても、ローカルにRails環境があればそれを読み取って実行しますので、実行方法を間違えてもトラブルにはなりません(Qiita)。

そして、

bundle exec を付けないと、通常、マシンにインストールされている最新バージョンのgemが実行されます。

なので、場合によっては意図しないバージョンが起動したり、gem同士の依存関係を正しく解決できなかったりする場合があります。

railsは大丈夫ですが、rakeなど別なコマンドではトラブルとなります。

投稿2017/03/07 23:43

maisumakun

総合スコア145121

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

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

dongw

2017/03/08 08:48

回答ありがとうございます。 質問1ですと、Gemをアプリのディレクトリに入れるか共通のディレクトリ?に入れるか、の違いということでよいのでしょうか?また、このvendor/bundleにGemをインストールするやり方の記事がrails3の記事を参照にして質問させてもらったのですが、現在のRails5ではこのvendor/bundleにインストールするやり方は一般的なのでしょうか? 質問3 rakeコマンドではトラブルになる、ということですが、これは不可逆の問題も起こる可能性があるということですか? 「bundle exec 付け忘れているよ!」というエラーが表示されるわけでなく、そのまま取り返しの付かないことになってしまうこともあるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問