Herokuでデータベース上のデータを、主にSQLite3を使用してダウンロードしたりアップロードする手順のメモ。
インストール
まずHerokuにデータベースファイルをアップロードしたり、Herokuからダウンロードしたりするにはtapsというgemが必要になるのでインストールする。これをインストールすると、rack、sequel、sinatra、sqlite3、sqlite3-rubyなどが一緒にインストールされるので、gemの管理に気を使っている場合は注意が必要。
$ gem install taps
ちなみに、こういう依存関係のgemを対象gemのインストール前に知る方法ってあるのかな?
gem dependency
コマンドはインストール後のgemの依存関係を表示してくれるけど、インストール前に何が一緒にインストールされるのかはわからない。とググってたら、いちおうRubyGemsのサイトに行けば調べられるみたい。
taps | RubyGems.org | your community gem host
これを見ると、tapsをインストールすると、上記の他にrest-clientやjsonも一緒にインストールされるっぽい。たしかにgem list
してみたら入ってた。毎回こうやってRubyGemsのサイトを探して見るしかないのかな? gem
コマンドから調べられると嬉しいんだけど… とりあえず、tapsをインストールできたら準備完了。
ダウンロード
Heroku上のDBファイルを、ローカルにダウンロードするには以下のようにheroku db:pull
コマンドを実行する。
$ heroku db:pull sqlite://保存したいファイル名 --app Herokuアプリ名
$ heroku db:pull sqlite://dump.sqlite3 --app heroku-hello-world
すると、Herokuが「マジで実行するならアプリ名もっかい入力して?」と聞いてくるので、もう一度Herokuアプリ名をタイプしてエンターを押すと、ダウンロードが開始される。で、ローカルのカレントディレクトリにdump.sqlite3
が生成される。
アップロード
ローカルのDBファイル(.sqlite3
ファイル)を、Heroku上にアップロードするには以下のようにheroku db:push
コマンドを実行する。
$ heroku db:push sqlite://現在のディレクトリからのDBファイルへの相対パス --app Herokuアプリ名
$ heroku db:push sqlite://db/development.sqlite3 --app heroku-hello-world
すると、Herokuが「マジで実行するならアプリ名もっかい入力して?」と聞いてくるので、もう一度Herokuアプリ名を入力すると、アップロードが開始される。
Heroku | Dev Center | Importing and Exporting Your Data Heroku | Push and Pull Databases To and From Heroku Ruby 1.8.7とjson1.5.1 x86-mswin32で、「msvcrt-ruby191.dllが見つからない」エラー - モンテカットの開発日記