リスク回避のためにソースコードはDropboxの管理下に置いています(一人プロジェクトだと% git push
を忘れる可能性も少なくありません)。
プロジェクトに関わるソースファイルだけであれば大した容量にはならないのですが、依存するライブラリのソースコードなどが入ってくる同期するデータサイズが増えます。
こうなるとDropboxの容量を食うのはもちろんなのですが、同期プロセスがガンガンに走ってしまいCPUがきつくなってしまい、MacbookAirのファンが大騒ぎになります。
主に問題になるのがRubyのbundlerでインストールしたgem。
パスを指定せずに% bundle install
するとRuby全体が参照できるところにgemをインストールします。これをやるといろいろなバージョンが混在したりしてわけがわからなくなるので--path
オプションをつけてプロジェクトディレクトリ以下に置きましょうというのが一般的な話なんですが、さっきも言ったようにこれだとDropboxの同期が忙しくなります。
そこでなんとかしてプロジェクトディレクトリではないけどRuby全体に影響を与えないところに入れられないかなーと考えたのが適当に作ったこのスクリプト。
#!/usr/bin/env ruby
bundle_dir = "/Users/xoyip/.bundle_install_dir/"
name = Dir.getwd.gsub("/", "_")
system "bundle install --path #{bundle_dir}#{name} --binstubs=.bin"
ホームディレクトリにbundler用の場所を作り現在のディレクトリのフルパスを名前に変換したディレクトリ内に各gemをインストールするというもの。ベストなソリューションではないですが僕個人は一応満足しています。
ついでに--binstubs
を指定して、↓の問題にも同時に対処できるようにしてあります。