リーン・スタートアップでいうところのMVP(Most Valuable Product)を作る機会がここのところよくあり、MVPの立ち上げを効率よくするためにベースとして使っているリポジトリを公開してみます。
ここでは、そのリポジトリを使って、ローカルPC上に開発環境を構築して、その上で動作確認しながら開発し、Herokuで限定公開する流れをご紹介します。
それでは手順を順におっていきます。
準備
開発の環境はMacを想定しています。必要なアプリケーション類を入れていきます。
VirtualBox
仮想化はVirtualBoxのバージョンは4.3.12で動作を確認しています。下記から対象のOSのインストーラーをダウンロードしてインストールします。
Vagrant
本体
Vagrantは1.6.2で動作を確認しています。下記から対象のOSのインストーラーをダウンロードしてインストールします。
プラグイン
プラグインが必要になるので、コマンドラインからvagrant plugin
でインストールします。
$ vagrant plugin install vagrant-omnibus
Berkshelf
ホストOS側にChefの公開CookbookをいれるのためにBekshelfが必要になるので、rbenvを下記のURLを参照にしていれます。
Rubyのバージョンは特に問わないのですが、ここでは2.1.2をいれます。
$ rbenv install 2.1.2
$ rbenv global 2.1.2
gemでBerkshelfをいれます。
$ gem install berkshelf
開発環境の構築
ベースになるリポジトリをgit clone
して、依存するcookbookをいれます。
$ git clone git@github.com:hirotaka/rails-for-mvp.git
$ cd rails-for-mvp
$ berks vendor vendor/cookbooks
このままでもいいのですが、共有フォルダをNFSにすることでひとつひとつのコマンドの実行が早くなります。
NFSで共有するにはIPを固定にしなくてはいけないので、例えば下記の設定をVagrantfileに追加します。
config.vm.network :private_network, ip: "192.168.33.11"
また、共有フォルダのオプションを変更します。
config.vm.synced_folder ".", "/home/vagrant/rails-for-mvp", type: :nfs, create: true
vagrant up
します。ネットワーク環境などによりますが結構時間がかかります。
$ vagrant up
立ち上がったらvagrant環境にsshでログインします。
$ vagrant ssh
データベースを作成します。
$ cd rails-for-mvp
$ cp config/database.yml.example config/database.yml
$ bundle install --path vendor/bundle
$ bundle exec rake db:create
適当に何かscaffoldでテーブルを作成します。ここでは、Userテーブルを作成します。
$ bundle exec rails generate scaffold User name:string email:string
$ bundle exec rake db:migrate
Railsサーバを起動します。
$ bundle exec rails server
ブラウザで下記に接続して管理画面を表示します。
追加したファイルをコミットします。
$ git add -a
$ git commit -am'Add user model'
デモ環境
他の人でも見られるように、Herokuにデモ環境を構築していきます。
すでにHerokuのアカウントがあり、Heroku Toolbeltが設定されている状態で、
$ heroku create
$ git push heroku master
$ heroku run rake db:migrate
$ heroku open
これでブラウザが起動して、開発環境と同じアプリが動作していることを確認します。
以上です。