環境はVagrantで、でもコードはGitで、みたいな。
で、Gitのコードはホストにあるので、ゲストにはSynced Folderでーっていう。
ありますよね、こういう経験。
synced_folder
ホスト(=自分のOS環境)と、ゲスト(=Vagrant内)を同期してくれる便利な機能ですが、普通に使うとハマります。
ファイルの量が少ないならいいけど、だいたいのケースでそんなことないはず。
Vagrant.configure("2") do |config| config.vm.synced_folder "~/path/to/your/git/folder", "/home/vagrant/path/to/synced" end
こんなふうにtypeに何も指定しないままだと、あれこれ重くてまったく仕事になりません。
特にRailsとかやってると顕著な気がするけど、
- rails serverで何分もかかったり
- ページ開いてもSprocketsが1分/ファイルとか
このままではマジで使えないです。
type: "rsync"
「Vagrant 重い」とかで検索すると、type: "nfs"で快適!みたいなのがよく引っかかります。
ただMacでしか使えない上に、パーミッションまわりで謎にハマることが多いので注意。(経験談)
そこでtype: "rsync"!
Vagrant.configure("2") do |config| config.vm.synced_folder "~/path/to/your/git/folder", "/home/vagrant/path/to/synced", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "--copy-links", "--times", "-z"], rsync__exclude: [".git/"] end
rsyncに渡すオプションはご自由にですが、だいたいこんな感じでやるとすべてうまく行きます。
あとは`vagrant up`して、`vagrant rsync-auto`ってしとけば、リアルタイムに同期される!素敵!