Life is Like a Boat

忘備録や経済、投資、プログラミングに関するメモやtipsなど

Herokuまわりの勉強

半日中、Herokuまわりの勉強をしていました。

以下忘備録かねてまとめたものです。

PostgreSQLのHobby Basicプラン

HerokuではPostgreSQLのAddonが無料から使えます。しかし、無料プラン(Hobby Dev)は最大10,000行まで。日々のプライスデータなら3日もあれば一杯になってしまいます。 その次のHobby Basicプランだと$9/月で最大10,000,000行まで使えます。

これなら年単位で大丈夫そうです。

LocalからHeroku Postgresにdbをdumpしたい

  1. 公式ではLocal分をdump
  2. dumpファイルをS3に載せる
  3. pg:backups:restoreでHeroku Postgres側に取り込む

の方法を推奨しているようです。

S3にupしたファイルを一時的に公開アクセス状態にするのがベストプラクティス的にどうかと思います。あと、S3使ってない人はイラっとするでしょう。 私はこれくらいで別の方法を探すような時間の無駄をしたくないので公式ガイドに沿ったやり方にしました。
Importing and Exporting Heroku Postgres Databases with PG Backups | Heroku Dev Center

Herokuアプリ間でHeroku Postgresを共有する

1千万行もあれば、複数アプリ間で一つのdbを共有したくなります。オフィシャルのドキュメントを読んでいるとそれが可能だとわかりました。

heroku addons:attach Heroku Postgresアドオンが乗ってるApp名::DATABASE --app 共有したいApp名

例えば、App名がmisoでここにHeroku Postgresのアドオンを載っけているとします。新たに作ったApp、sushiで共有したい場合
heroku addons:attach miso::DATABASE --app sushi
となります。

これでアプリsushiの環境変数にDATABASE_URLが追加されます。

https://devcenter.heroku.com/articles/heroku-postgresql#sharing-heroku-postgres-between-applications

pip freezeがイラっとする

requirements.txtというアプリに必要なライブラリをまとめたものをherokuにデプロイしないといけません。 $ pip freeze > requirements.txt するとrequirements.txtに書き出されるのですが、いままでpip installした全てのものが書き出されるようです。仕方がないので、アプリでimportしているものだけをマニュアルで記述するようにしました。
すると案の定、実行時にこれが足りないだのエラーが出て都度都度パッケージ名を書く羽目になると。
他にいい方法があればどなたか教えてください (><)。