bundler
rbenv
bashrc

失敗しないcommandの呼び出し方 | Tips for Internship 1

More than 1 year has passed since last update.



[ Tips for Internship ] について

KARAPPOにインターンの学生さんが入ってきたので、教育過程で出てきたTipsのうち、一般的なことはここに書いていってみようと思います。間違ったことを教えていたら恥ずかしいのですが、自分の気持ちを引き締めるために公開してみます。なにかおかしなことがあれば、指摘していただけるとありがたいです。



失敗しないcommandの呼び出し方

rbenvを使用していて、ブロジェクト毎のgemはbundlerでプロジェクトフォルダ下にインストールしている時、普通にrails sとかbundle installとかしても、意図したcommand(またはその依存関係にあるcommand)が呼び出せないことが原因で、エラーが出ることがあります。

これは、rbenvやbundlerを使うと同じ名前のcommandがローカルマシン内に複数存在することが原因の一つです。(本当は、PATHの設定とかちゃんとすればうまくいくんだとおもいますが…)

こういう時、「rbenvで指定したrubyを使って」+「(そのruby環境にインストールされた)bundlerで管理している◯◯を呼び出す」という意味でrbenv exec+bundle execとすれば、明示的にcommandの指定ができるので、予め毎回これを付けておくと変なところで詰まりにくくなります。

rbenv exec bundle exec ◯◯

ただ、毎回打つのは面倒なので、ショートカットを割り当てておくと便利です。

~/.bashrcに下記を追加

# rbenvとbundlerを使った環境用

function re { rbenv exec $@ }
function reb { rbenv exec bundle $@ }
function rebe { rbenv exec bundle exec $@ }

これで、

re ◯◯

と打てば、

rbenv exec ◯◯

が実行でき、

reb install

と打てば、

rbenv exec bundle install

と同じ意味に。さらに、

rebe rails s

で、

rbenv exec bundle exec rails s

が実行できます。


<余談>

.bashrcによく使うcommandのエイリアスを書いておくと、便利です。

参考までに僕の設定ファイルの該当部分です。(bashじゃなくてzshを使ってるので.bashrcではなく.zshrcという名前になってますが、大概同じ記述で大丈夫なはずです)