Bundlerをparallelで動かす方法

こちらのスライドを見ていて22 tips目辺りに記載されていました。
Random Ruby (and Rails) Tips // Speaker Deck
 

このスライドを見るまでの流れとしては

  1. Rebuild: Aftershow 53: Because We Are Global (Matz, zzak) を聴く
  2. Zakkのtalkが面白そう
  3. Show Notes にある [oedo04] Nobody Knows Nobu / @_zzak - YouTube を見る
  4. 愛があっていいtalkだなぁと思う
  5. QAで最後のpatchは何かと聞かれて
    このOedo RubyKaigiの別talkで話題にあがったopen-uriconst_set に対するもの
  6. という話から [oedo04] Random Ruby Tips / @winstonyw - YouTube を見る

といった感じです。
Brighton Ruby Conference のスターウォーズtalkも見てみたい。動画ないかしら。

さて本題

jobsオプション

tips22 にあるように-jの後に数字をつけるだけでokなようです。

bundle install -j4

helpより抜粋

       --jobs=[<size>]
              Install gems parallely by starting size number of parallel workers.

正式には--jobsのようですが-j でも動きます。

やってみたところ

10〜15sくらいかかっていたbundle installが6sほどになりました。 体感として早くなったので嬉しい。

./bundle/config

tips23 にあるようにglobal settingsとできるようです。

❯❯❯ sysctl -n hw.ncpu
4
❯❯❯ bundle config --global jobs 4
❯❯❯ cat ~/.bundle/config
---
BUNDLE_JOBS: '4'

./bundle/config 知らなかったわ。

余談

rails new したら bunlder が走ってイライラという場合は.railsrc を用意すると幸せになります。

❯❯❯ cat ~/.railsrc
-T --skip-bundle

See Also

大江戸Ruby会議04 - YouTube