Rails
Mac
Heroku

HerokuのRailsアプリをクローンしてローカルで動作させるまでにやること(postgresqlの場合)

More than 5 years have passed since last update.

Railsの開発環境を構築したんだけど, 既存アプリをCloneして動かすのにどうすればいいのかわからない... というときのメモ

development環境のデータベースにpostgresqlを用いているHeroku上のRailsアプリをローカルで動作させます.


事前準備


必要なToolのインストール

とりあえずMac環境でHomebrewを使った方法を残しておきます.

とにかくRails環境とpostgresql, Heroku ToolbletがあればOK.

brew update

brew upgrade
brew install postgresql
brew install heroku-toolbelt


Herokuアカウント取得

ここからHerokuにサインイン


Collaboratorとして登録してもらう

アプリのownerに自分のHerokuアカウントをCollaboratorとして登録してもらいます.

登録されていないアプリはheroku git:cloneできません.

アプリ(例としてアプリ名をHOGEとします)のOwnerにさきほど登録したメールアドレスを伝えて

heroku sharing:add hoge@example.com --app HOGE

としてもらいます.


アプリをclone & gemインストール


terminalで

# 作業DIRへ移動

cd ~/huga
# まずはログイン
heroku auth:login
# clone
heroku git:clone --app HOGE

とすれば~/huga/HOGE/にアプリの中身がやってきますので

cd ~/huga/HOGE

bundle install

としてCloneしたアプリが必要とするgemを入れます.


postgresqlの設定


データベース起動

# postgrsqlをバックグラウンドで起動

# ここでは~/.pgserver.logにログ出力させています
pg_ctl start -l ~/.pgserver.log

(終了する場合はpg_ctl stop -s -m fastです)


データベース作成権限をもつユーザを登録

CloneしたアプリのDB設定に合わせてローカルのpostgresql環境を整えます.

設定はconfig/database.ymldevelopment:以下に書かれています.


~/huga/HOGE/config/config/database.yml

development:

adapter: postgresql
encoding: unicode
pool: 5
database: hogedb
username: hogeac
password: hogepass
host: localhost

のような記述になっているかと思います.

database.ymlにあるusernameをpostgresqlのユーザとして登録します.

ここで-dオプションを付けてデータベースの作成権限を与えることが必要になります.


terminalで

$ createuser -P -d hogeac

# ユーザ名が小文字のみで作成すると楽
# passwordとしてhogepassを入力


権限を確認するとき

psql -lでデータベースの一覧を確認できます.

初期状態ではpostgres, template0, template1といったデータベース名があるかと思います. どれでもいいので接続して(ここで例としてpostgresに接続します)

psql postgres

# postgresqlのコンソールが起動します
# ユーザを確認します
postgres=# \du

Role name
Attributes
Member of

fesinfo
Create DB
{}

となってればOKです. Create DB権限がないと, db:createができません.

コンソール終了は\qです.


dbを作成

cd ~/huga/HOGE

rake db:create db:migrate

これで必要なdb(レコードなし)が構築されます.

全てのレコードをコピーする場合にはHerokuのデータベースをリストアすればよいかと思います.


動作確認

rails server

# 別の端末を立ち上げて
open http://localhost:3000


secret_tokenでエラーが出る場合

HOGE::Application.config.secret_token = ENV['SECRET_KEY_BASE'] || "sometoken"

みたいになっていたら, herokuの環境変数をsecret_tokenとして使っています.

このときは

export SECRET_KEY_BASE=`rake secret`

などで適切な環境変数を設定する必要があります.


参考