Posted at

herokuでRails5のアプリをdeployする

More than 1 year has passed since last update.


About

herokuの公式ページそのまんまの情報です。せっかくなので作業メモとして投下。


準備編

$ brew install heroku


基本編

# ログインする

$ heroku login

# 環境変数を確認する
$ heroku config

# 環境変数を登録する
$ heroku config:set HOGE=fuga

# 環境変数を取得する
$ heroku config:get HOGE

# 環境変数を登録解除する
$ heroku config:unset HOGE

# addonを導入する

$ heroku addons:add heroku-postgresql


Rails5.X

https://devcenter.heroku.com/articles/getting-started-with-rails5


Railsアプリを作る

$ be rails new myapp -d postgresql

$ cd myapp
$ be rails g controller welcome
$ vim app/views/welcome/index.html.erb
<h2>Hello World</h2>
<p>
The time is now: <%= Time.now %>
</p>

$ vim config/routes/rb

Rails.application.routes.draw do
root 'welcome#index'
end
$ be rails db:create

ここまで来ればrails s してローカル上でアプリが見られる


herokuにdeploy

$ git init

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

# appを作成する

$ heroku create
$ git config --list | grep heroku

# pushしてアプリがdeployされる
$ git push heroku master

# deployしたアプリを確認する(この時点ではエラー
$ heroku apps:info

# dbをmigrate
# ログインしてrails db:migrateを叩く
$ heroku run rails db:migrate

# ブラウザで開く
$ heroku open

# アプリの状況を確認する
$ heroku ps

# ログを確認する
$ heroku logs
$ heroku logs --tail


番外編

# pumaを利用する

$ vi Procfile
web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}


backup編

こちらと同じもの https://devcenter.heroku.com/articles/heroku-postgres-backups


DBのbackup

# backupを取得する

$ heroku pg:backups:capture --app <appname>

# backupの状況を確認する
$ heroku pg:backups:info

# backupを辞める
$ heroku pg:backups:cancel

backupの数はplanで決まっているので注意


スケジュールでのbackup

# スケジュールを確認する

$ heroku pg:backups:schedules --app <appname>

# スケジュールを登録する
$ heroku pg:backups:schedule DATABASE_URL --at '02:00 Asia/Tokyo' --app <appname>

# スケジュールを解除する
$ heroku pg:backups:unschedule --app <appname>


backupにアクセスする

# backupが保存してあるpublicなendpointを取得する(60minutesで使えなくなる

$ heroku pg:backups:url --app <appname>

# donwloadする
$ heroku pg:backups:download
# currentにdumpファイルが出来ている


backup情報を確認する

# 概要を取得

$ heroku pg:backups
=== Backups
ID Created at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ────── ────────
b001 2017-01-30 05:44:27 +0000 Completed 2017-01-30 05:44:29 +0000 5.36kB DATABASE

=== Restores
No restores found. Use heroku pg:backups:restore to restore a backup

=== Copies
No copies found. Use heroku pg:copy to copy a database to another

# backupの詳細情報を取得
$ heroku pg:backups:info b001
=== Backup b001
Database: DATABASE
Started at: 2017-01-30 05:44:28 +0000
Finished at: 2017-01-30 05:44:29 +0000
Status: Completed
Type: Manual
Original DB Size: 7.30MB
Backup Size: 5.36kB (100% compression)


backupをrestore/deleteする

$ heroku pg:backups:restore b001 DATABASE_URL --app <appname>

# appnameのタイプを求められる

# 他のアプリのバックアップを利用する
$ heroku pg:backups:restore <appname>:b001 DATABASE_URL --app <appname>-staging
$ heroku pg:backups:restore 'https://hogehoge/me/items/mydb/dump' DB_URL -a <appname>

# DBのバックアップを削除する
$ heroku pg:backups:delete b001 --app <appname>

# DBをコピーする
$ heroku pg:copy COBALT GREEN --app <appname>
# COBALT -> GREENにコピー


sqlを直接叩く

$ heroku pg:psql -c "select * from users"