scramble cadenza

技術ネタのガラクタ置き場

No bundle exec

イントロ

bundle exec したくない、という話。随分前に調べたやつ。

  • bundle exec メンドイ
    • しかも使用頻度高い
  • コマンド自体が長くなって、初めて見るコマンドを覚えづらい
    • bundle exec 以降を覚えればいいけど、ついつい全部覚えてしまう。
    • コマンドが長いとそれだけで疲れる
    • しかも bundle exec 自体は本質的ではない
  • alias be='bundle exec' とかあるけど、be 打つのもだるい

という問題意識があります。

候補

実は探せば結構ある。自分が触ったのは以下の 3 つ

結論

direnvrbenv-bundler > rbenv-binstubs

今は何も考えず direnv で良いと思う

direnv

安定の direnv さん。 新しい rails なら PATH_add bin もやっておくと良い。

方法

bundle install --path vendor/bundle --binstubs=vendor/bundle/bin
direnv edit

PATH_add vendor/bundle/bin # この一行を追加して save

長所

  • 拡張性の高さ
  • go 製なので独立したアプリケーション
  • no bundle exec 以外にも使える

短所

  • ちょっと手順が多い
  • --binstubs を忘れると OUT

rbenv-bundler

以前使用していた
最近 update したら、使えなくなってた。
その後 direnv に乗り換えた。

方法

bundle install --path vendor/bundle
rbenv rehash

長所

  • 移行コストが非常に低い
    • いつもと変わらぬ感じで利用できる

短所

  • 重い
  • 今は使えない

rbenv-binstubs

binstubs を指定するのがダルくて、rbenv-bundler に移行した。 これをつかうなら direnv で良いと思う

方法

bundle install --path vendor/bundle --binstubs=vendor/bundle/bin
rbenv rehash

長所

  • ないかも...

短所

  • binstubs 忘れたら OUT
  • direnv と比較すると、下位互換的な感じ
    • 実質 bundler でしか機能しないので