WindowsにRails開発環境を立てる(Vagrant+rails-dev-box+RubyMine)
__2016/3/8追記__
結構アクセスあるみたいなので追記しますが、あらかじめ言っておくとUnixネイティブ程には追いつけないです。
特にjavascriptの差分ビルド関連が遅かったりするので、可能である限りおすすめしません。私はあきらめました。
動機
これからやることの概要
手順
Vagrant、VirtualBox、RubyMineのインストール
それぞれダウンロードしてインストール
WindowsにUnixライクなターミナルエミュレータとgitを導入
既に使用している方は大丈夫です。
私のおススメはcmder(導入参考リンク: 開発者がSurfacePro3を買ったらまずやること - Qiita)
git for Windowsはcmderのgit bashに付属しているのでこの方法が楽です。
個別に入れる場合はこちら: Redirecting Git for Windows' homepage...
rails-dev-boxからgit cloneし、OSイメージをダウンロード
rails-dev-boxからcloneします
$ git clone https://github.com/rails/rails-dev-box.git
cloneされたディレクトリに移動して、仮想マシンを立ち上げます
その際にOSイメージがダウンロードされるので少し時間がかかります(モバイル回線非推奨)
$ vagrant up
この時点で3000番ポートにはアクセスできることが確認できます
railsプロジェクトがある場合はホスト側(Windows)からlocalhost:3000でアクセスできるのが確認できます
~~インストール済のpythonの以下のコマンドを叩くことでも確認ができます~~
rubyの以下のコマンドでもサーバを建てることができます
$ ruby -run -e httpd . -p 3000
※Rails4.2を使用している場合、通常のrails serverコマンドではWebrickが従来の0.0.0.0ではなく127.0.0.1で起動しポートフォワードされないため、-b 0.0.0.0とオプションで指定する必要があります
RubyMineから接続する
RubyMineを起動し、新規プロジェクトを作成します
作成後にVagrantfileを指定するため、作成場所はどこでも問題ありません。RubyMineProjects下に置くのが良いでしょう
プロジェクト作成後は以下の手順でVagrant内と接続します
- File>Settings>Languages&Frameworks>Ruby SDK and GemsからRuby処理系側の+ボタンを押し、New remoteを選択
- Configure Remote Ruby Interpreter画面が開かれるので、Vagrantにチェックを入れ、Vagrant Instance FolderにはVagrantfileのあるディレクトリを、Ruby interpriter pathは/user/bin/rubyのままでOKを押します。するとVagrant内と接続をしてRubyを読みに行きます。鍵の発行をしていなかった場合ここで発行を促されるかもしれません
- File>Settings>Build, Execution, Deployment>Developmentから+ボタンを押し、リモートサーバを追加します。TypeはSFTPを選択し、hostは127.0.0.1、Portは2222、UsernameとPasswordはともにvagrantを入力し、Root pathがAutodetectで成功すれば成功なので、OKで閉じます。この際、Mappingからサーバ側のプロジェクトルートを設定することで同期範囲を限定することができます
- Tools>Deployment>BrowseRemoteHostで、Vagrant内のファイルが確認できます。Alt+1でProjectメニューを表示し、右クリック>Deployment>Download from [サーバ名]を選択し、サーバ内容をローカルに複製します
- 通常のリモート開発と同様の環境を再現することができました。syncすることで手元の編集事項がサーバに反映されたり、サーバでたたいたコマンドの変更結果を手元に反映させたりできます。
(自動同期については後日追記します)
RubyMineでの開発
RubyMineは非常に多機能で、調べながらでもまだまだすべての機能をつかいこなせていません
RubyMineAdventCalendar2014という非常に便利な情報源があるのでそちらを参考にすると良いです
またRubyMine内臓のshellからvagrant sshすることで、さながらローカルで開発しているのと同様の環境で開発できます(上で説明したcmderを使うよりも便利)