herokuのアドオン(MongoLab)を使ってみたので色々メモ。
- アドオンの導入とかはググるがままに、でOK。
- デプロイの前に落ち着くこと。前回、bottleを試してみたときのデプロイからpymongoを追加したので、`
pip freeze > requirements.txt
でrequirements.txtを更新した。 - mongoLabはherokuのダッシュボード>Add-ons>MongoLabからアクセスできるし、親切設計になっている。
- コマンドとかは記載されているのでコピペでOK。
- データベースは作成されているものを使う。コレクションはブラウザのダッシュボードから作ってみた。
- 嵌ったのは、geolocationデータを使っていたドキュメントを扱うところ。ローカルで作業している時にやった操作をすっかり忘れていて、エラー検証に時間かけてしまった。正解は、「地理空間インデックスを作成する」。以下、作業手順。
ブラウザからでもできそうな感じだったけど、とりあえずターミナルからmongoする。
mongoLabに"To connect using the shell:"コマンドが載っているので、それを使う。
%mongo <my path> -u <user> -p <password>
接続したら、
db.myCollectionName.ensureIndex({myKey: "2d"})
でインデックスができる。他のコレクションはいけてるみたい。
- herokuとローカルでデータベースを使い分けれるように、こういう感じにすると良いとみんな言ってるし実際にそんな感じ。
MONGOLAB_URI = os.environ.get('MONGOLAB_URI')
if MONGOLAB_URI:
conn = pymongo.Connection(MONGOLAB_URI)
db=conn.<dbName in mongoLab>
else:
conn = pymongo.Connection()
db = conn.<dbName in local>
実行の条件にもする。
if __name__=='__main__':
if MONGOLAB_URI:
run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
else:
app.run(host='localhost', port=8080, reloader=True)
- 常に
heroku logs
でチェックしておくこと!