2016-04-12(火) [長年日記]
■ HerokuのMongoLabアドオンが設定する環境変数名がいきなり変わった
GitHub上に置いてある自作のrubyプロダクトは、依存Gemの更新をTachikoma.ioを使って定期的にウォッチしていて、Tachikomaが送ってくるプルリクをHeroku上のPipelineに放り込んで、問題なければmasterにマージ……という流れで開発してる。基本的にこれだけならWebブラウザだけで完結してしまうので、ほんと楽。
で、今日もTachikomaがせっせと送ってきたプルリクを処理していたら、Heroku上で生成されたReview Appが実行に失敗してる。ログをみてみるとMongoDBが見つからないとか言ってるので、調べてみると従来使われていた環境変数MONGOLAB_URIではなくMONGODB_URIが設定されてるではないか。えー、なにこれ。
ちなみにMongoLab社は今年に入ってからmLab社に名称変更していて「MongoLab」という名前は徐々に消えていくんじゃないかとは想像していたけど、まさかこんないきなり来るとか(笑)。たぶんテストコードがプロダクションに混入しちゃったんじゃないかなー、mLab社に聞いてみないと……と思いつつTwitterでつぶやいたら、Herokuサポートの@zundanさんに拾ってもらえたので(いつもお世話になっております)、お任せしてしまったら、驚愕の回答が:
@tdtds ドキュメントが実装の変化を追いかける感じに進むようです。お手数かけますー
— zunda nはオマケ (@zundan) 2016年4月12日
こんな重大な仕様変更をアナウンスなしでいきなり決行するとか、自由()な会社だなぁ、mLabよ……。
もちろん稼働中の既存アプリに影響はないけど、今回のようにCIに組み込んでる場合なんかはコードを修正してMONGOLAB_URIとMONGODB_URIの両方を参照するようにしないといけない。MongoLabを使ってるプロダクトのほとんどは、だいたいこんな感じで修正した:
- mongodb_uri = ENV['MONGOLAB_URI'] + mongodb_uri = ENV['MONGODB_URI'] || ENV['MONGOLAB_URI']
なお、addon追加時に以下のように指定することで、従来どおりのMONGOLAB_URIを設定しれくれるそうです:
% heroku addons:create mongolab --as MONGOLAB
なので、コードを修正したくない場合は↑の方法で対処してもいいと思う(tDiary.Netは影響範囲が大きいのでこっちにした)。