もこたんぺ Learning Note

自分が勉強する上でわからなかったことを理解を深めていくためにまとめていく。

「bundle exec 〜」ってナゼいるの?

そもそもBundlerってナニ?

プロジェクト内で使うGemのパッケージを管理するツールのことで、簡単にいうならばrbenvと似ている感じ。

 

rbenvとは

Rubyのバージョン管理を切り替えるツールのこと。

使っている環境全体のバージョンだけではなく、ディレクトリごとにバージョンを設定することもできる。

 

Rubyのバージョンは、プロジェクト毎にrbenvで管理し、

gemのバージョンは、プロジェクト毎にBundlerで管理する。

 

 

「bundle exec」を付けない状態でコマンドを実行するとどうなるのか?

・Gemfile.lockに基づかずにgemのバージョンが決定されてしまう。

 逆に「bundle exec」をつけることでGemfile.lockに書かれているバージョンでgemが動く

・bin/rspecのように書くと、springのおかげで動作が速くなる

 (springってなんだったっけ...)

railsコマンドだけはbinを省略してもbin/railsとして解釈される

 

なので

 

railsコマンドは何も付けずに実行できる

・binディレクトリにファイルが存在するコマンドはbin/○○

・それ以外のコマンドはbundle execをつける

 

springとは

アプリケーションをバックグラウンドで実行し続けることで、開発をスピードアップするRailsアプリケーションプリローダのこと。

(pre + load = 前もってロードしておく)

 

 

●参考

https://qiita.com/d0ne1s/items/fa2dafcee02e963fe997

https://qiita.com/dawn_628/items/1821d4eef22b9f45eea8

https://pleiades.io/help/ruby/spring.html