つい最近Railsチュートリアルの1週目を完了しました。全部を通して見て一番大変だった部分はと聞かれると、やはり第1章かなと思います。難度的には優しいとは思うんですが、初めからわからないことだらけだったので、結構苦戦しました。ですので、今回は第1章付近で僕が苦戦した部分とその解決法を3つほど書いていきます。確かこの3つで一週間近く潰れた気がします。
開発環境
macbookPro2018 13inch
AWS cloud9
ssh鍵にメールアドレスはいらない
第1章 1.4.3でgitbuketにssh鍵を登録する場面があります。sshキーの作成方法は「秘密鍵・公開鍵を作成する(Mac)」がわかりやすかったので、そちらを参照してください。
ssh鍵は
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AA......... == example@example.com
で見ることができます。(コードは見やすくする為に「...」で省略してます。)ただし、この中には一部必要ないものもあります。それがメールアドレスの部分です。上のコードでいう
example@example.com
の部分はssh鍵に必要ない部分なので、その部分以外をgitbuketに登録すれば大丈夫です。
起動するたびにherokuがない
herokuをインストールするコードはRailsチュートリアルに書いてあって、実際それを実行すればheroku自体を使うことはできます。しかし、翌日になって見たら使えない。というかherokuのバージョン調べて見たらこう出てきた。
$ heroku -v
heroku: command not found
消えとるやん!でも、まあ消えてるなら入れるしかないので、もう一度入れ直す。一応正常に動く。
翌日。また消えとるやん!また入れる直す。一応正常に動く。予想通り翌日にまた消える。
正直、これは入れ直せばいいだけなので、何とかなります。自分もこの状態でRailsチュートリアル最後までやりました。ただ、めんどいので改善を試みました。
具体的にやったことは2つあって、この2つをやったらherokuが消えなくなりました。ただ、どこで消えなくなったのかわからないので、もしかしたらどちらかだけでも改善するかもです。
2つともbashというシェルスクリプトに関するものです。シェルスクリプトはまあ、人間とpcの仲介人みたいなものだそうです。詳しくはわからないので、とりあえず試したことだけ記載しときます。
1
$vi ~/.bashrcを開いてその一番下の行に下記コードを追加すること
source $HOME/.profile > /dev/null
2
~/.bash_profileを作成すること
$ touch ~/.bash_profile
herokuにデプロイする前にyamlを変更する
Railsチュートリアルでは開発環境をMYSQL,
herokuでの本番環境の時はPostgreSQL
という風に分けられてます。
Railsチュートリアルでは、Gemfileだけそのように記述しているわけなんですが、
これだと多分下記のようなバグが発生します。
2018-11-02T03:02:43.589214+00:00 app[web.1]: /app/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/connection_specification.rb:188:in `rescue in spec': Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
バグを発生させない為には、
configディレクトリ内にあるdatabase.ymlのproductionを下記のように変更する必要があります。
production:
<<: *default
database: db/production.postgresql