Heroku
RubyOnRails

素人がHerokuでRailsアプリを公開(自分用メモ)

目的

HerokuにRailsで作成したアプリ(今回はscaffoldで簡単なものを作る)をデプロイする。
Herokuのアカウント登録の説明は省略する。

やることリスト

  1. Heroku CLIをインストールする
  2. Railsアプリ作成
  3. Herokuにアプリを送る

環境

以下のログなどで...となっている箇所は省略の意味。

参考

  1. Ruby on Rails 5 アプリケーションプログラミング(初版)
  2. ドットインストール(Heroku入門)
  3. Heroku公式ページ

詳細

1. Heroku CLIをインストール

Heroku公式ページの通りにインストールする

Screen Shot 2017-08-17 at 0.58.34.png

CentOS7はStandalone。

自分の環境によってREPLACE_ME_OS,REPLACE_ME_ARCHを変更する。
uname -sでOS情報、uname -mでアーキ情報が得られる。
自分の環境では、REPLACE_ME_OS=linux,REPLACE_ME_ARCH=x64。
以下のコマンドをホームディレクトリで実行した(どこでもいい)。

$ wget https://cli-assets.heroku.com/heroku-cli/channels/stable/heroku-cli-linux-x64.tar.gz -O heroku.tar.gz

$ tar -xvzf heroku.tar.gz

$ sudo mv heroku-cli-v6.13.17-275c5ef-linux-x64 /usr/local/lib/heroku

$ sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku

$ heroku --version
heroku-cli/6.13.18-a444c52 (linux-x64) node-v8.3.0

herokuへのログインのためにssh鍵が必要。
ない場合は、ssh-keygenコマンドで以下の鍵ペアを作成する。

$ cd ~/.ssh/
$ls
authorized_keys  id_rsa(秘密鍵)  id_rsa.pub(公開鍵)

herokuログイン

$ heroku login
Enter your Heroku credentials:
Email: ...
Password: ...
Logged in as ...

$ heroku keys:add
...
公開鍵をアップロードする

2. Railsアプリ作成

アプリケーション作成

ドットインストールでは rails new ** -d postgresqlとして、
最初からpostgresqlを使うようにしているっぽいが、
この方法はrails db:migrateがうまくいかなかったのでやめた。。
gem install pg error対処はしておく。この辺りごちゃごちゃ試したのでインストールしたものが足りてないかも。。

$ sudo yum install postgresql-devel
$ sudo yum install postgresql-server
$ rails new mytest
      create  
      create  README.md
      create  Rakefile
      ...

$ rails s
...

サーバを立ち上げてブラウザで以下のような画面が出ればサーバ立ち上げはOK。
Screen Shot 2017-08-17 at 1.48.42.png

$ cd mytest
$ vi Gemfile (gem 'therubyracer', platforms: :rubyを有効にする)
$ rails g scaffold Memo title:string body:text
Running via Spring preloader in process 15700
      invoke  active_record
      create    db/migrate/2017..._create_memos.rb
      ...
$ rails db:migrate
== 2017... CreateMemos: migrating ======================================
-- create_table(:memos)
   -> 0.0005s
== 2017... CreateMemos: migrated (0.0005s) =============================

以下のような画面が出ればローカルでのアプリケーション作成はOK。
Screen Shot 2017-08-17 at 23.20.10.png

3. Herokuにアプリを送る

Gemfileの編集
gem 'rails_12factor', group: :production を追加するらしい。
gem 'sqlite3'をコメントアウト。
gem pgを追加(postgresqlのため)。

全然わかってないけど、ローカル⇄Herokuのたびにgemの設定を変えるのか?。。

Procfileの作成(Gemfileと同じ階層)
web: bundle exec rails server -p $PORT

アセットを準備する

$ rails assets:precompile RAILS_ENV=production
Yarn executable was not detected in the system.
Download Yarn at https://yarnpkg.com/en/docs/install
...

アプリのディレクトリをGit管理にする

$ git init
Reinitialized existing Git repository in  ...
$ git add .
$ git commit -m "init"
[master (root-commit) 1700a57] init
...

heroku createを実行

$ heroku create
Creating app... done, ⬢ ABC
https://ABC.herokuapp.com/ | https://git.heroku.com/ABC.git
↑このURLを開く

$ git push heroku master
Counting objects: 116, done.
...
remote: Verifying deploy... done.
To https://git.heroku.com/ABC.git
 * [new branch]      master -> master

$ heroku run rails db:migrate
...

以下のような画面が出れば成功。

Screen Shot 2017-08-17 at 23.55.31.png

おしまい

情報が古かったり、参考ごとにやり方が違ったり足りてなかったりして、この手順が良いのかは不明。
一応、数回やり直してもうまくできているのでまあいいか。。
言われた通りにやっている所は何をしているか理解していない部分もあるので今後の課題。