LoginSignup
11
12

More than 5 years have passed since last update.

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

Posted at

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`

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

参考

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12