投稿

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

Travis-CIで環境変数を使う

前回 紹介したSendGrid-Reversiで Travis-CI を使った際に気になった箇所のメモを残します。 Travis-CIを使うためにはプロジェクト内に .travis.yml という名前のファイルが必要です。とりあえず、リポジトリトップ下に置いてポチポチ設定すればいいみたいです。 今回はこんな感じにしてみました。 language: ruby rvm: - "2.0.0" # - "2.1.0" env: - RACK_ENV=test services: - mongodb before_script: - bundle install script: - bundle exec rspec それぞれの詳細はTravis-CIの ドキュメント を見ればよいのでポイントだけ。 実行環境のバージョン指定は一つだけにしてみる 実行環境としてRubyを使っており、通常複数バージョン指定できるのですが、今回はバージョンを一つだけ(上の例だと"2.0.0"だけ)に限定してみました。 これは、テストケースでSendGrid APIを使っている関係上、複数環境でテストをするとテストが並列実行されてしまい、SendGridがテストケースの想定していない状態になってしまい失敗(テンプレート削除のテスト中にテンプレート作っちゃったり)するためです。実行環境毎のテストをシーケンシャルに走らせるためのオプションを見つけられなかったのですが、そんなのあるんですかね? SendGrid環境も分けるようにしないといけないんでしょうか。それはちょっとキツイなー、と。 晒したくない情報は.travis.ymlではなくSettingsを使う 環境変数は「env:」配下に書いておけばよいのですが、パブリックなリポジトリにアップされた .travis.ymlファイルは公開されてしまうため、晒したくない情報(サービスへのログイン情報など)は書けません。 今回、SendGridへのアクセスを行なうテストケースがあったので、そういった情報をどこに置くかが問題となりました。調べてみるとそういう情報は「Settings」に書けってTravis-CIのヘルプに 書いてありました 。Settin

SendGridをゲームプラットフォームとして使ってみました

イメージ
きっかけ SendGridには多くのAPIがあって、どれをどういう風に使うのかがピンときていませんでした。で、自分含めそんな人向けに、SendGridのAPIをできるだけ多く使ってそれぞれの使い所をイメージしやすいモノを作ってみようと思いできあがったのがこのアプリケーションです。 できること メールを介してオセロができます。 ソースコードは こちら で公開しています。 中で何をやっているか こんな感じで動作します。 0:アプリケーション初回起動時 Web API/Template Engine APIを使ってSendGridの設定を自動的に変更します。設定が自動化されると、設定手順をドキュメント化する手間が減って楽ですよね。 SendGrid上にTemplateを作成します Event Notificationを設定してEvent Webhookを有効化します Parse Webhookを設定、有効化します Click Trackingを有効化します 1:ゲームの開始 Parse Webhook機能に設定したアドレスにメール(件名に相手プレイヤーのアドレスを設定)を送るとSendGridは受信したメールを解析して、Reversi Web AppにPOSTします。POSTを受けたアプリケーションはMongoDB上にゲームデータを生成します。 アプリケーションはSendGrid経由で各プレイヤーにメッセージおよびゲームボードのメールを送ります。 2:クリック ゲームボードのメール上で石を置きたい場所をクリックすると、クリックイベントがSendGridからReversi Web AppにPOSTされます。ここではEvent WebhookとClick Tracking機能を使っています。 クリックイベントはGETでアプリケーションに直接アクセスしても良いのですが、Click Trackingは元URLを隠ぺいするので、今回のアプリではなりすましを防ぐ意味合いがあります。(本当は単に使いたかっただけで、理由は後付です) テキストメール このアプリでは、マルチパートでテキストメールにも対応しています。 対応してみてテキストメール死ねって思いました。 その他 Ruby