Herokuのアプリを他のサーバで動かす
今頃になってRuby on Railsの勉強を始めているのですが、適当に作ったアプリを公開するところとしてHerokuを活用させてもらっています。
本格的に運用していこうという時にはHerokuのアプリを別サーバに移すのですが、その方法をメモっておきます。
ここでは、Herokuのアプリをローカルで動かすことを目標とします。
まず Heroku の My Apps 画面から、お目当てアプリの settings を選択し、Import & Export タブからアプリを Export しローカルにダウンロードします。
そして、ダウンロードしたアプリを解凍します。
$ tar app_heroku.tar.gz
解凍された中に tmp と log のディレクトリがないので作ります。
$ mkdir tmp log
また、config/database.yml もないので作ります。HerokuのDBはPostgreSQLですが、ここはSQLite3にしましょう。
$ vi config/database.yml
database.ymlの中身はこんな感じです。
development:
adapter: sqlite3
database: db/development.sqlite3
Herokuで作ったアプリのDBの中身は db/data.yml に入っていますので、ここからデータをロードします。
$ ruby script/plugin install http://opensource.heroku.com/svn/rails_plugins/yaml_db
$ rake db:load
(in /Users/hide/rails/app)
- create_table("shops", {:force=>true})
-> 0.0897s
- initialize_schema_information()
-> 0.0059s
- columns("schema_info")
-> 0.0006s
最初にdb:migrateもしてくれているようです。これでDBの移行は完了です。
$ ruby script/server
動いたー!
また、DBにMySQLを使う場合は以下のようになります。
$ vi config/database.yml
development:
adapter: mysql
database: DB名
host: localhost
username: アカウントID
password: パスワード
次に上で指定したDB名のDBを作ります。
$ mysqladmin create DB名
そしてDBのデータをロードします。
$ rake db:load
これでおkです。
DBの移行がめんどくさいところなのですが、yaml_db を使うことで簡単に移したりできるようになっています。例えばHerokuで rake db:dumpでデータを db/data.yml にダンプして、別サーバで rake db:load するだけでDBの移行は完了です。
参考