Cloud9でPostgreSQLを利用しHerokuにRails5.xをデプロイした時の手順

  • 8
    いいね
  • 2
    コメント

HerokuにCloud9からRails5.0.0.1をデプロイする時に行った方法です。

ワークスペース作成

Cloud9に新規でワークスペースを作成
blankを選択
スクリーンショット 2016-10-08 15.31.39.png

Railsのインストール・アプリの作成

gem install rails --no-ri --no-rdoc
rails new myapp --database=postgresql
cd myapp
bundle install

Getting Started with Rails 5.x on Heroku

Hello World

rails generate controller welcome

app/views/welcome/index.html.erb

<h2>Hello World</h2>
<p>
  The time is now: <%= Time.now %>
</p>

config/routes.rb

root 'welcome#index'

この時点ではPostgreSQLの設定をしていないので rails s -p $PORT -b $IP をやってもエラーになります。

Cloud9でPostgreSQLを使えるようにする

PostgreSQL起動

sudo service postgresql start

ユーザー作成+α

sudo sudo -u postgres psql
postgres=# CREATE USER username SUPERUSER PASSWORD 'password';
postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
postgres=# DROP DATABASE template1;
postgres=# CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
postgres=# \c template1
postgres=# VACUUM FREEZE;
postgres=# \q

Cloud9の設定にユーザー名とパスワードを保存

echo "export USERNAME=username" >> ~/.profile
echo "export PASSWORD=password" >> ~/.profile
source ~/.profile

dababase.ymlを編集

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

development:
  <<: *default
  database: myapp_development

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

Cloud9で動作確認

DB作成

rails db:create
rails db:migrate

起動

rails s -p $PORT -b $IP

Herokuにデプロイ

ログイン

heroku login

コミット

git init
git add .
git commit -m "init"

デプロイ

heroku create
git push heroku master

以上となります。
これでうまくいかない場合や不明点などありましたらお知らせ下さい。