読者です 読者をやめる 読者になる 読者になる

Rails on Vagrant on Windows 開発

Vagrant Windows Chocolatey

この正月休み帯状疱疹にかかって都合7日間布団の中におり、その後3日間は出社せず自宅で作業していました。

自宅作業の際 Photoshop を使う必要があったため、 Windows 機(エロゲから音楽再生からやっている私のメイン PC 。メモリ32GB)といつもの Ubuntu ノート2台立ち上げて作業していましたがこれが面倒くさくなり、開発環境が Vagrant (の VirtualBoxUbuntu )で提供されていることをいいことに完全に Windows 上で作業しました。 Emacs はもともと入ってましたがもう使ってなくて、 RubyMine と秀丸(フリーカーソル)でやってます。

RubyRubyInstallerpik で既に構築済みでした。 RubyDevKit も入れておくとかなり捗ります。

putty 周りは必須です。

Chocolatey

Windows で環境準備と言えば Chocolatey です、多分。入れたパッケージは

でした。 mysql-32bit は、 gem の msql2 を入れたかったからです。 openssh は、 vagrant ssh が "ssh" っていう実行できる何かを求めていたからです(ちなみに $HOME\.vagrant.d\insecure_private_key を使い、 putty.exe を自分で起動して普通に繋ぎに行けば問題ないですが、 vagrant ssh が使いたかったっていう…)

これでかなり良い感じになります。

フォント

上の EthanBrown.ConEmuConfig で SourceCodePro ってフォントが入るんですが、何にせよ日本語の問題があるので Ricty を入れました。 ConEmu を起動して、設定で Ricty Discard にして、 "Monospace" に付いてるチェックを外すと具合が良くなりました。

git

SourceTree か SmartGit/Hg がフィットしました。自分は SmartGit/Hg のライセンスを持っています。 SourceTree は OSX 版をメインとして開発されているようで、 Windows 版はかなりバージョン(とそれに伴うバグ修正や機能変更)が遅れているのが気になりました。

gem

実際の rails server は vagrant の中の Ubuntu がやるので、ここで必要なのは僕が使っている RubyMine が要求するためです。いくつか gem で困ったんですが、忘れました。 therubyracer を除いてちょっと検索したら全て解決しました。 rubyracer は platforms: :ruby を付けて Windows じゃいらないっす。ってしました(下記参照)。

nfs

(追記)Vagrant 1.5 で smb マウント追加されました。

Vagrant の中で立ち上がる何かが(遅い…)って感じるときの最大の要因は synced folder ですよね。 Windows でも nfs したかったので、いくつか試してみました。 haneWin という Windows 用 nfsd が個人的には一番楽でした。 C:\Program Files\nfsd の下の exe を3つ Windows Firewall に登録して終わりです。

その他 Rails 的なこと

rails を入れると less のために execjs が何らかの JS ランタイムを要求します。あらかじめコメントアウトされているとおり rubyracer を入れて platforms を ruby にしときます。 rubyWindows 以外の ruby って意味で寂しいです。 Windows では WSH 環境があるので、 execjs のためにのみ必要なのだったら rubyracer いらないです。

gem 'therubyracer', :platforms => :ruby

platforms は bundlr の領分です。一覧に興味があれば doc をどうぞ。

あと自分は Chocolatey から mysql を入れたため gem install で場所が分からんと怒られました。

gem install mysql2 -v '0.3.15' -- --with-mysql-dir="C:\tools\mysql-32bit\mysql-5.6.15-win32"

とします。大体、 bundle install で入らない gem ってこのパッケージの場所の話な気がする。

とはいえ繰り返しですがアプリケーションが実行されているのは vagrant の中の virtualbox の中の ubuntu なのでこの辺は全部 RubyMine とたまに Windows 側で rake タスク実行したくなるとき用です。

以上で全然変わらず開発できました。助かりました。