LoginSignup
3
0

More than 5 years have passed since last update.

windows上に爆速でRuby on Rails環境を構築する

Posted at

前置き

インフラの準備って大変ですよね
Webアプリ作りたいのに、いきなりアプリは動かせなくって、プログラミング言語をインストールしてフレームワークを入れて・・・
さらには互換性の問題とかで入らない(泣) みたいなことも経験された方も多いかと思います。

私自身、Webアプリが作りたい → 規模も大きくないし、Ruby on Railsだな → 開発はVSCode使いたいしWindows上に作るか → Windowsにrubyいれてrails入れてbundle installするぜー → なんか動かんorz・・・ ってなりました。

そこで今回はWindows上にRuby on Railsの環境をちょいちょいっとするだけでインストールするためのスクリプトを開発しました。
スクリプトはGitHub上においています。(URL: https://github.com/sh-miyoshi/vagrant-rails)

使用にあたっての事前準備

今回はVagrantとAnsibleで環境を作ってWindows上にディレクトリを共有するんですが、Vagrantのインストールだけはどうしても自動化できませんでした。(ごめんなさい・・・)

そこで先人様のお力を拝借してWindowsにVirtualBoxとVagrantをインストールしてください。
(私は以下のサイトを参考にさせていただきました。)
https://qiita.com/TakashiOshikawa/items/d2fb48d59e9e316af9a2

また、CentOS 7のイメージを以下のコマンドでダウンロードしておいてください

vagrant box add centos7 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box

実行手順

(1). GitHubからソースを入手します

下記のどちらかの方法でダウンロードしてください
+ git clone https://github.com/sh-miyoshi/vagrant-rails
+ GitHubの右上のClone or downloadタブからダウンロード
(2). dataフォルダの作成

vagrant-railsをダウンロードしたフォルダで右クリックして、dataという名前のフォルダを作成してください。(このディレクトリの配下にRuby on Railsのソースが展開されていきます)
(3). 自身のアプリ名の入力
ansible/group_vars/all.yamlをテキストエディタで開き、appNameを自身のアプリ名に変更してください

ansible/group_vars/all.yaml
appName: demo

(4). VMの起動とアクセス
コマンドプロンプトからvagrantコマンドをたたいて、VMを起動させてください。
※ansibleのコマンドに失敗した場合は、失敗個所を修正後vagrant provisionコマンドで再度プロビジョニングしてください。

vagrant up
vagrant ssh
./run.sh

(5). ブラウザから動作確認

localhost:3000にアクセスするとRuby on RailsのTOP画面が表示されるかと思います。

Railsアプリの開発

ソースコードはwindows上のdata/の下にあります。
また、Railsアプリはdocker上で動作しているので、rails generateコマンドなんかはdocker execコマンドでbashを起動して実行してください。
終了は./stop.shを実行してください。(dockerアプリの削除とrails内pidファイルの削除をしています)
ちなみに私は以下のようなMakefileを使ってます(最初の一回だけは./run.shを実行する必要があります)
(GitHubの入れるかどうか検討中・・・)

APP_NAME=your-app-name
APP_IMAGE_NAME=rails
APP_VERSION=1.0
APP_IMAGE=$(APP_IMAGE_NAME):$(APP_VERSION)
DATA_DIR=/vagrant/data

all: run

run:
    docker run --name $(APP_NAME) -d -v $(DATA_DIR):/myapp -p 3000:3000 -w /myapp/$(APP_NAME) $(APP_IMAGE) /rails_server.sh

rm:
    docker stop $(APP_NAME)
    docker rm $(APP_NAME)
    rm -f $(DATA_DIR)/$(APP_NAME)/tmp/pids/server.pid

restart: rm run

bash:
    docker exec -it $(APP_NAME) bash

それでは楽しいRails生活を送りましょう!
Happy on Rails:hearts:

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0