投稿

10月, 2014の投稿を表示しています

Herokuボタンをつけてみた

イメージ
ちょっと前 に作った SendGrid-Reversi というサンプルアプリにHerokuボタンを付けてみました。 デプロイが簡単に行えて楽しかったのでメモします。 app.json という名前のファイルを 適切なフォーマット で書いてプロジェクトルートに置いときます。そのうえで、README.mdあたりにHerokuボタンを貼り付けておけば準備完了です。 app.json を見ると何となく分かるように、今回はAPP_URLとPARSE_HOSTという2つのパラメータがデプロイ時に必要になります。 また、アドオンとしてmongohqとsendgridをいれてあります。これを入れておくと勝手にアドオンが追加されて環境変数に追加されるアクセス情報を使って各アドオンが利用できるようになります。 この状態で上記リポジトリの README.md 内のHerokuボタンを選択すると次のような画面が表示されます(Herokuアカウント持っていることが前提)。 今回のアプリは、SendGridのParse Webhookを利用します。APP_URLにはWebhookのPOST先URLのルートを指定する必要があります。Herokuの場合、App Nameを指定しないと自動で名前がふられるため、このタイミングではAPP_URLが確定できません。これだと困るので、App Nameを指定した上で、その結果確定するこのアプリケーションURLをAPP_URLに設定するのが一番単純です。(アプリのURLを取得できればこんな冗長なパラメータは不要になるはずですが、取得方法があるのかはわかりませんでした) 例えば、 App Name:abcd APP_URL:abcd.herokuapp.com みたいな感じです。 一方、PARSE_HOSTは、メール受信用のドメインです。手っ取り早く設定するのであれば、 こちら の「5分間アプローチ」を参照します。サブドメインは未使用であればなんでもOKです。 アプリケーション起動時にSendGridとMongoDB周りの設定を自動的に行なうようにしてあるので、細かな設定は一切不要です。 一点注意ですが、内部で使用しているSendGridのEvent Webhookは設定変更後動作が有効になるまでに数分は

sendgrid4rを作ってみた

SendGridのWeb API v3が公開されたので sendgrid4r というgemを作ってみました。 sendgrid4rはとりあえずSendGridのWeb API v3”だけ”をサポートしたライブラリです。今後v2をサポートするかどうかはわかりません。 v3はちょっと前に公開されたTemplate Engine APIを含むRESTfulな新しいAPI群です。 v3が出たからといってv2がすぐにdeprecateになるわけではないようです。 というのも、今のところv3は、v2と被る機能(v2を置き換える機能)を提供していません。 現時点で、以下の機能がありますが、今後もどんどん機能が追加されていく雰囲気を感じます。実はここに載っている機能の他にも、一瞬公開されてすぐに非公開にされた機能があります。 公式ドキュメント の更新履歴をよく見るとわかると思います。 Advanced Suppression Manager(ASM) IP Management Enforced TLS(Settings) Template Engine ASMは高度なUnsubscribeリスト機能で(特にマーケティングメール系の)色んな種類のメールの配信停止を個別に制御したい場合に使う機能 IP Managementは送信するメールの種類毎に複数のIPアドレスを駆使して、メールの到達率を可能な限り高めたい場合に使う機能 Enforced TLSは平文でメールが配送される経路を排除する場合に使う機能 Template Engineは複数のテンプレートの管理をデザイナ側に移譲する場合に使う機能 って感じでしょうか。 そういえば一応、今回のsendgrid4rの設計思想的なものをメモしておきます。忘れっぽいので。 今回目指したのは、以下の3点です。 機能追加を簡単に行えるようにしたかった APIのI/Fは全てSendGrid4r::Clientのインスタンスメソッドとして提供したかった ClientインスタンスごとにSendGridの認証情報を分離したかった v3は頻繁に機能追加されることが予想されるため、機能追加を簡単にするため、各サブ機能はmoduleとして実装して、これをClientクラスにincludeすることにしま