[Django]Twitter APIを扱ったアプリをHerokuにデプロイする時の注意すること

今回はHerokuにデプロイする時にTwitterAPIなどの隠しておきたいキーをどう扱えばいいか最初迷ったので、備忘録として書いておきます。一応、これはPython/Djangoでを想定しています。

ローカル

ローカルで開発する時は、TwitterAPIはgit管理してみられたくないので、twitter.pyに記入して.gitignoreに入れていると思います。

それでは、settings.py

from . import twitter
SOCIAL_AUTH_TWITTER_KEY = twitter.SOCIAL_AUTH_TWITTER_KEY
SOCIAL_AUTH_TWITTER_SECRET = twitter.SOCIAL_AUTH_TWITTER_SECRET

ただし、このままHerokuにデプロイすると、.gitignoreに書かれているのでエラーが出ます。なので、この記述はlocal_settings.pyに書いておきましょう。DEBUG=Trueの時、これが呼び出されます。

本番

では、本番環境で読み込ませるためにはどうすれば良いのでしょうか。

settings.pyに下のように書いておきます。

try:
    from .local_settings import *
except ImportError:
    pass

if not DEBUG:
    import django_heroku
    django_heroku.settings(locals())
    SOCIAL_AUTH_TWITTER_KEY = os.environ["SOCIAL_AUTH_TWITTER_KEY"]
    SOCIAL_AUTH_TWITTER_SECRET = os.environ["SOCIAL_AUTH_TWITTER_SECRET"]

os.environで環境変数をと見込むことができます。環境変数はHerokuにログインしているターミナルで下記のように。

$ heroku config:set SOCIAL_AUTH_TWITTER_KEY="******" SOCIAL_AUTH_TWITTER_SECRET="******" --app "app_name"

これで本番環境でもTwitterAPIを使えるようになりました。