sk

開発で得たこと

【bundlerまとめ】bundle installの--path vendor/bundleって何?

f:id:sksksksksk:20180728162228p:plain

結論

bundle install --path vender/bundle

vender/bundle 配下にgemをインストールします。

アプリケーションごとにgemをインストールすることができるので、システムに依存しないアプリケーションを構築することができます。 複数アプリケーションがローカルPC内に存在する場合や複数人と開発を行う際に役に立ちます。

プロジェクト管理の必要性について

現場では一つのアプリケーションだけを管理・開発することはまずありません。 個人でRailsアプリケーションを開発している人はそれだけでローカルPC内に複数のアプリケーションが存在します。

gemはRailsアプリケーションごとに管理することもローカルPC内で管理することもできます。 ローカルPCのgemはそれぞれこれまでにインストールしてきたgemがあります。みんなローカルPCにあるgemは同じでないです。

ローカルPCでgemを管理して作業をしてしまうと、私のPCではアプリケーションが動作するがあの人のPCでは動作しないという現象が起きてしまいます。 個々人の開発環境に左右されず、アプリケショーンを正常に動作させる必要があります。

bundlerって何?

アプリケーションプロジェクト内で使用するパッケージ管理システムです。

bundlerを使うことでアプリケーションプロジェクトごとにgemを管理することができます。 同じようなものにrbenvが挙げられます。 rbenvはgemではなく、rubyのバージョンをアプリケーションごとに管理します。

どうして--path vendor/bundle をつけるの?

--path vendor/bundle をつけることでアプリケーションにgemをインストールすることができます。

具体的にはvender/bundle配下にgemがインストールされるようになります。

f:id:sksksksksk:20180728163829p:plain

実例

  • 実行
$ bundle install --path vender/bundle
  • vendor/bundle配下にgemがインストールされる f:id:sksksksksk:20180728160635p:plain

  • Project/.bundle/configにパスが設定される

Project/.bundle/config

---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'

bundle execって何?

アプリケーションにインストールされたgemでアプリケーションを実行することができます。

例えばRailsサーバーを起動する時にrails sを実行するとシステムのgemを元にサーバーを起動し、 bundle exec rails s を実行するとアプリケーションのgemを元にサーバーを起動します。

bundle installのオプションまとめ

構文

bundle install --path <フォルダ名>

システム(PC)にインストール

bundle install

Railsアプリケーションにインストール

bundle install --path vendor/bundle

本番用以外のgemをインストール

bundle install --without production

開発・テスト環境以外のgemをインストール

bundle install --without development test

参考

Bundler: The best way to manage a Ruby application's gems

Bundler: The best way to manage a Ruby application's gems

ProgateやRailsチュートリアル、プログラミングスクールを通い終えたが現場のコードはかけない、

一体どうやって書くの?と思っているエンジニアのみなさんのためのチュートリアルを公開しています。

チュートリアル