LoginSignup
6
6

More than 5 years have passed since last update.

私がMongoLabを使うことで解決せぬエラーはなかった。

Posted at

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でチェックしておくこと! 
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6