Rails Heroku デプロイ手順 忘備録

まずDBポスグレのインストールから

PostgreSQL起動

$sudo service postgresql start

ユーザー作成

ポスグレにログインする。psqlはパスワード

sudo -u postgres psql

ポスグレでuserを作成しておく。

rails_user を作成

CREATE USER rails_user SUPERUSER PASSWORD 'password';

前に#がついていれば、ポスグレにログインしている。抜けるときは\q バックスラq

postgres=# CREATE
postgres-#     USER    rails_user   SUPERUSER
postgres-#     PASSWORD    'password';
CREATE ROLE

こんな感じで作成される 参考資料 https://www.postgresql.jp/document/9.1/html/sql-createuser.html

終了

\q

環境変数にユーザー名とパスワードを保存

$echo "export DBUSER=rails_user" >> ~/.profile

~/.profileに書き出しています。

$echo "export DBPASS=password" >> ~/.profile

~/.profileに書き出しています。

$source ~/.profile

設定を反映、ウインドウズのF5キーと思えば良い。

環境変数の確認

一応あっているかチェック

echo $DBUSER

echo $DBPASS

ここでOSの上にもrails_userを作っておかないといけない。 それがrailsを走らせて、rails db:migrateするときにエラーになるため

FATAL:  Ident authentication failed for user "rails_user"

$ sudo useradd rails_user $ sudo passwd rails_user

rails_userへ変わる $ su rails_user

Gemfileのポスグレへの変更

sqliteは使わない。cloud9で動かなければ、herokuでも動かないため。 チェックができない。

gem 'pg'

gemをインストールする

$ bundle install

/config/database.ymlの変更

encoding: unicodeに注意

[myapp]はrailsのプロジェクト名に変更すること YAMLファイルは半角スペースきちんと開けないとエラーになります。

default: &default
  adapter: postgresql
  encoding: unicode 
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 
  username: <%= ENV['DBUSER'] %> 
  password: <%= ENV['DBPASS'] %>
  host: localhost

development:
  <<: *default
  database: [myapp]_development

production:
  <<: *default
  database: [myapp]_production
  username: [myapp]
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

この書き換えが終わったらrails db:createを実行します。

Heroku Postgres