Windows 10にVagrantでRails開発環境を構築する

More than 1 year has passed since last update.

諸事情により、WindowsマシンでRailsの開発環境を構築する必要が発生したのでVagrantを利用して仮想環境を構築しました。同じような境遇を迎える後世の人々のためにその手順をここに記しておきます。


構築する環境(2017年5月29日時点)


  • Ubuntu 16.04

  • Ruby 2.4.1

  • Rails 5.0.3

  • DBはPostgreSQL(Windowsにインストール済)


実行したマシンのスペック

Windows 10 Home

バージョン: 1607

OSビルド: 14393.1198

VirtualBox: 5.1.20

Vagrant: 1.9.2

PostgreSQL: 9.5.4

※Vagrantのインストール手順は割愛します。


1. VagrantのVM作成

ubntu 16.04のboxからVMを作成します。

vagrant box add ubuntu1604 https://atlas.hashicorp.com/bento/boxes/ubuntu-16.04/versions/2.3.6/providers/virtualbox.box

mkdir ubuntu1604
cd ubuntu1604

vagrant init ubuntu1604
vagrant up
vagrant ssh

VM内に作業用のディレクトリを作成する。

mkdir -p /home/vagrant/rails

いったんWindowsに戻って、Vagrantfileに以下の設定を追記します。

Windows側に作業用のディレクトリを作成してください。

config.vm.network "private_network", ip: "192.168.33.10"

# ディレクトリは任意
config.vm.synced_folder "c:/rails", "/home/vagrant/rails"

設定を反映させます。

vagrant reload


2. 基本ライブラリのインストール

以下はVagrantのVM内での作業になります。

sudo apt-get install -y g++ make git build-essential libssl-dev libffi-dev libreadline-dev zlib1g-dev libreadline-dev libyaml-dev libxml2-dev libxslt-dev libpq-dev


3. rbenvのセットアップ

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

source ~/.bash_profile


4. Rubyのインストール

rbenv install 2.4.1

rbenv rehash
rbenv global 2.4.1


基本的なgemとRailsのインストール

gem update --system

gem install bundler
gem install pg -v '~> 0.20.0'
gem install rails --version='~> 5.0.0' --no-ri --no-rdoc


5. Windows側のPostgreSQLの設定変更

WindowsにインストールされているPostgreSQLサーバーに接続するための設定です。

Windows側の [PostgreSQL HOME]\data\pg_hba.conf に以下を追記してPostgreSQLサービスを再起動します。

host    all  all     192.168.0.0/16  password


6. Railsアプリケーションの作成

cd /home/vagrant/rails

rails new rails-pg -d postgresql

C:\rails\rails-pg に作成したRailsアプリケーションのソースが同期されるのでWindows側で編集が可能です。

config/database.yml に以下を記述します。

default: &default

adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
url: <%=
ENV["DATABASE_URL"] %>

次にPostgreSQLへの接続設定として環境変数 DATABASE_URL を設定します。

DATABASE_URL は以下の書式で記述します。

postgres://[user_name]:[password]@[host]:[port]/[database_name]

export DATABASE_URL=postgres://[user_name]:[password]@[host]:[port]/[database_name]

Railsアプリケーションを起動し、 http://192.168.33.10:3000/ でRailsのトップ画面が表示されることを確認します。

rails s


おまけ

Vagrantのprovision機能でRailsのインストールまでを自動化しているので興味がある人は以下のリポジトリを覗いてみてください。

https://github.com/cobot00/vagrant-config