前置き
インフラの準備って大変ですよね
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を自身のアプリ名に変更してください
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