Ruby
Rails
Heroku
dotinstall
vagrant

DotinatallのHeroku講座でハマったとこ記録

お題

ドットインストール先生の力を借りてHerokuを学び始めました。
思いの外、色々ハマったので、その記録を残していきます。

必要な知識

HerokuサーバーにアップするアプリはRailsで用意するし、そのアプリを動かしたり、HerokuにアクセスするのはCentOSからする。また、そのCentOSの仮想環境の用意にはVagrantが必要と、かなり前知識がいる。
- Ruby and Rails
- Vagrant
- PostgreSQL

ハマったとこ

その中で、自分がハマったところだけピックアップして説明したいと思います。

Ruby, Railsのインストール

CentOSだし、yumでインストールしようとすると古いバージョンになってしまい、Railsが使えない。
ちゃんとパッケージのインストールからして、新しいバージョンのRubyのインストールが必要。
こちらを参考にさせていただきました。
https://qiita.com/iamdaisuke/items/46da26b4060ddec18895

Heroku CLI(Herokuコマンドラインインターフェイス)

別にハマった記憶はないけど、メモが残ってたので…

wget https://cli-assets.heroku.com/branches/stable/heroku-linux-amd64.tar.gz -O heroku.tar.gz
mkdir -p /usr/local/lib
sudo tar -xvzf heroku.tar.gz -C /usr/local/lib
sudo /usr/local/lib/heroku/install

SSH Key(公開鍵、認証鍵)の設定

ドットインストールだと最初っからSSH Keyあるけど、自分のではなかった…
適当に用意したCentOSにはありませんでした。
というわけで、下記コマンドで作成。

ssh-keygen -t rsa -b 4096

下記コマンドで、確認できます。

cd .ssh
ls

SSH Key設定後のVagrant up

さて、SSH Keyを用意した後、CentOSを再起動(Vagrant up)。
必要だったからというわけでなく、次の日に続きをしたから。
すると、なぜかCentOSが正しく起動されない…
原因は鍵の不一致だそうで、
まずは、下記コマンドでIdentityFileをチェック。

vagrant ssh-config

ファイル場所を先ほどチェックしたIdentityFileの場所にして、下記コマンドを実行。

ssh-keygen -yf /Users/****/private_key > public_key

これで、Vagrant upできました。

こちらを参考にさせていただきました。
https://qiita.com/d2cdot-mmori/items/1c340f175ae510e4456a

PpstgreSQLのインストール、初期設定

手順通り実施していき、Railsアプリもアップできた、Migrateしてデータベースを用意…としたいが、なんかMigrateが成功しない。
私の場合は、そもそもPostgreSQLのインストールをしていませんでした。(恥ずかしながら)
というわけで、PostgreSQLのインストールと初期設定について

yum list | grep postgresql-server   // Check yum. Don't use it due to old

sudo yum install -y https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
sudo yum install -y postgresql96-server postgresql96-contrib

インストール、初期設定、こちらを参考にさせて頂きました。
https://qiita.com/uhooi/items/44ed9370740c7521dce4

Rails更新後のHerokuアップデート

作業を進めているとミスしたり、トライ&エラーするもの。
GemfileとかProcfile間違えた、修正して再確認だ。とかしてもなぜか修正が反映されない。
なぜ…と悩んでみるが原因はシンプルで、修正後はもう一度bundle installしてからGit pushしないと反映されません。

bundle install
git add .
git commit -m "comment"
git push heroku master

Railsの仕様なんですかね。Railsせずに来たのでわかりません。

最後に

必要になる知識をちゃんと事前に勉強していれば、ハマったりしないと思います。
しかしながら、皆自分の環境でアプリをつくったりしているはず。
(自分の場合、Cakephp。CentOSやVagrantはわかるけど、Railsはさっぱりだった。解決策がはっきりしてないから書いてないけど、RailsのPostgreアドオン?を入れるのはめっちゃハマった。)
それをデプロイしたい、そうだHerokuを使おうと、ドットインストール講座にやってくるとハマると思ったので、記事にしてみました。
次に通る人のために、路を整えよ。