ottoの話です。
前置き
-
otto deploy
以降のコマンドの話はしません。 - v0.1.2devを使いました。現時点の公式安定版はv0.1.1です。
最初に結論
Vagrantfile生成機能が便利です。
Easy Vagrantとしてのotto
otto dev
コマンドだけを見れば、ottoは既存のプロジェクトを解析してVagrantfileを作ってくれる便利ツールです。
実質的に
-
otto compile
コマンド:.otto/compiled/app/dev/Vagrantfile
を作成 -
otto dev
コマンド:vagurant up
です。
うれしいシチュエーション
Railsアプリケーションを簡単に動かせるのが便利です。
(おそらく他の言語のアプリケーションでも使えますがRailsで試しました。)
たとえば
- 社内の他チームが開発中のアプリケーションを試しに動かす
- 既存のRuby on Railsアプリケーションの改修の見積もり依頼
厳密な環境ではなくとも、手早く起動したいときに便利です。
解決する問題
私は日頃はRuby on Railsを扱っていません。
たまに必要があって環境構築をしようとすると、なぜか毎回苦労します。
- rubyはnativeで入れるのか、rvmやrbenvを使うのか?
- nokogiriのインストールするに毎回違う理由で失敗する
- Gemの依存しているライブラリーを調べるのが辛い(myslq2はlibmysqld-devに依存しているのか?libmysqlclient-devに依存しているのか?)
これを勝手に解決してくれます!
手順
仮想環境の構築
適当なアプリケーションをgit clone
します。
(publicな適当なアプリケーションが思いつかないので、省略します)
アプリケーションのディレクトリ内で
otto compile
otto dev
これだけで、VagrantとViratualBoxを使った仮想環境が作れます。
実行には10分ぐらい掛かります。
アプリケーションの初期設定
otto dev ssh
でsshログインして、config/database.ymlを用意します。
Ruby - Otto dev sshしてからhostのMysqlへの接続 - Qiita を参考にして、hostを設定するとホストOS上のMySQLに接続できます。
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
は仮想環境上実行します。
vagrant@precise64:/vagrant$ netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
10.0.2.2
10.0.2.2
DBを構築して、アプリケーションを起動します。
rake db:migrate:reset
rake db:seed
rackup --host 0.0.0.0
otto dev address
で仮想環境のIPアドレスがわかります。
(例えば)
~ otto dev address
172.16.1.229
http://172.16.1.229:9292 に接続すれば該当アプリケーションが動きます。
まとめ 0.12(次バージョン)で追加されたらうれしい機能
- Gemfile(とGemfile.lock)から依存ライブラリーを解析
-
otto dev
でbundle実行
githubのmasterブランチに追加されている機能です。
公式のロードマップは確認していません。