諸事情により、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のインストールまでを自動化しているので興味がある人は以下のリポジトリを覗いてみてください。