【旧バージョン】【修正版】VCCW起動時にMailCatcherを起動するエイリアス作ってみた

【更新】2017/02/11

VCCW Ver.3では、デフォルトでMailCatcher動いてます 😄

Checking Email with MailCatcher

※ 注意! こちらはVCCW旧バージョンでのやり方です。Checking Email with MailCatcher

VCCW in MailCatcher最高っす!! あざます!!

ここの所MailCatcherを使うことが多かったので、VCCWを起動後、直ぐに立ち上げたいという欲求が出まして、サクッと起動する方法ないかな〜とあれこれ試してたら、うまく行きました 🙂

※ 上手く動いたのは良かったんですが、宮さんから教えていただいて修正しました。ohaiとか、jqとか勉強になりました。あざます!!

【新】仮想マシンにログイン後、ipを取得してmailcatcherに投げる

vagrant ssh -c で仮想マシンにログイン後、ohaiとjqを使って、ipを取得します。
宮さんから教えていただいたコードはこちら↓↓

activate-mailcatcher/setup.sh at master · vccw-team/activate-mailcatcher

で、ohai と jq 使った方法に書き換えたのがこちら↓↓

チョーシこいてワンライナーにしたのがこちら↓↓

marushu/start-mailcatcher

で、以下はohai?jq?だったので、調べてみました。

ohaiとは?

ohaiはChefがサーバー環境の情報収集のために使うソフトウェアです。
収集できる情報はハードウェアからOS、ネットワークまで一通りの物が対象です。

Chef/初心者向けChef入門講座/ohaiとattributeの自動判定 – インターネットウィキ

とのこと。ohaiとググってオハイオ州が出てきたのは内緒ですw

実際、Mac上でohaiと打ち込んでも、command not found となってしまい、Macにインストールするところから始めました。
あ、VCCWには初めっから入ってます!!

インストールにあたってはコマンドだとどうしてもうまく行かず、以下のサイトからダウンロードしてインストールしました。

Chef Development Kit | Chef Downloads | Chef

参考: 初心者にお勧めするChefの正しいインストール方法 – Qiitaohaiを使ってサーバの情報をプログラムで扱おう – インフラエンジニアway – Powered by HEARTBEATS

インストール後、ohaiとコマンド打ち込んでみたら、しっかり出てきました。フォーマットはjsonです。

[code]
ohai
{
"cpu": {
"real": 2,
"total": 4,
"mhz": 2600,
"vendor_id": "GenuineIntel",
"model_name": "Intel(R) Core(TM) i5-4288U CPU @ 2.60GHz",
"model": 69,
"family": 6,
"stepping": 1,
"flags": [
"fpu",
"vme",
"de",
"pse",
"tsc",
"msr",
"pae",
"mce",
"cx8",
"apic",
"sep",
"mtrr",
"pge",
"mca",
"cmov",
"pat",
"pse36",
"clfsh",
"ds",
"acpi",
"mmx",
"fxsr",
"sse",
"sse2",
"ss",
"htt",
"tm",
…と、大量に(^0^;)
[/code]

特にホスト側に入れる必要は無かったんですが、とりあえず入れて確認。

jqとは?

jqとは、コマンドラインからJSONを操作することができるツールです。
curlコマンドとかでJSONレスポンスを取得した場合、データ量が多いと非常に見づらいデータがかえってきたりして困ります。

jqで簡単JSON加工 | Developers.IO

ってことで、ohai で返ってきたデータをjq使ってフィルタかけて取り出したりできるツールのようです。

参考: jq Manual (development version)

ダウンロード → インストールもあるようですが、僕は今回は brewを使ってインストールしました。

[code]
brew install jq
[/code]

jqは今の僕でもいろいろと使えるかも知れません 🙂
jqの出力はオプションで色つきにもできるようです。

jqを色つきでless表示する – Qiita

政倉さん、あざます!!

ということで、ohaiとjq使って書き換えました〜 🙂
若干遅いのが気になる所なんですが…。。

【古】site.ymlに設定しているip使って起動する方法

えっと、僕は普段新規にVCCWを立ち上げる場合、site.ymlファイルを編集します。ip: も変更しますし、localhostもipと同じ値に設定してます。

こんな設定で使う人あまり居ないかなぁと思いつつ、vagrant sshせずとも良い場合、このやり方が楽ちんでついっすね…^^;

で、VCCWが立ち上がった後、

  • vagrant ssh
  • mailcatcher –http-ip VCCW設定のip

と毎回打ち込むんですが、毎度だと面倒になったので、少しでも楽ちんにしたいなぁと言うことで、エイリアス作ってみました。

これです 🙂
因みに、site.ymlがあるディレクトリでやらないと動かないっす。

やってる内容

  • grep “ip:” site.yml でsite.ymlファイル内のip: がある行を取得
  • tr -d “ip: ” 取り出した行の内容から”ip: “を削除(コレでipのみになる)
  • 順番前後するけど、このipを変数IPへ代入
  • 変数IP使って、vagrant ssh -c “”で、vagrant にsshログイン後、””内のコマンドを実行
  • mailcatcher –http-ip ${IP} 変数IP(site.ymlのip部分)を代入

上記の内容をやってます。ってことでsite.ymlのip:記述が無くならない限り使えます ^^;

他にVCCWで使ってるエイリアス

それくらいやれよ…。。
な内容ですが、ワリと便利に使ってます。

site.ymlを先ず開く(新規VCCW設定の場合)

[code]
# vccw site.yml setup
alias vvccww=’cd vccw; cp provision/default.yml site.yml; vim site.yml’
[/code]

vagrant upしてエディタを開く

[code]
#vccw quick up
alias vccw-quick=’vagrant up; cd www/wordpress; pstorm . ‘
[/code]

;で繋いでるだけっすけどね 😛

MailCatcherの終了はブラウザから?

[code]
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://192.168.19.181:1080
*** MailCatcher runs as a daemon by default. Go to the web interface to quit.
[/code]

っと起動時に既にweb interfaceからやってねって書いてあるので他にはないのかな。。

あと、複数VCCWを立ち上げちゃってる場合は、-http-port PORT, –smtp-port PORT とかやった方が良いのかも。最近は同時に起動とかあまりしなくなったけど 😛

スクリプト作っといても

Run pre/post provisioning scripts

You can place shell scripts, so it will run at pre/post provisioning.

  • provision-pre.sh – Run before chef provisioning.
  • provision-post.sh – Run after chef provisioning.

VCCW – A WordPress development environment.

とかカスタマイズしても良いのかも。

ワンライナーを真似して作ってみた 🙂

GitHubに置いてワンライナーで行けるかどうかやってみた。
ばっちり 🙂

marushu/start-mailcatcher

readmeには書いたけど、site.ymlのあるディレクトリに移動して

[code]
curl https://raw.githubusercontent.com/marushu/start-mailcatcher/master/start-mailcatcher.sh | bash
[/code]

でOK。GitHubに置いとくと何かと便利なんだなぁと置いてみてわかった次第。
ワンライナーってこうやって作るんすね〜!! 楽しい 🙂

参考