結構躓いたので、後々のためにメモ。Heroku周りのエラーの解消が大きな目的である。
0. 注意事項
初心者のうちは書かれた手順に忠実に従うべきである(自戒)。「この作業いらなくね」と思っても、とりあえずそれに従っておくのが一番早い。無理なショートカットは禁物である(自戒)。
1. RubyやRailsなどのインストール
以下の記事の「8. bundler を入れよう」までを行う。nを用いたNode.jsのバージョン管理については飛ばしてもいいかもしれない。自分は飛ばしてしまった。
なお、Rubyのインストール時にはHeroku(後で使うサービス)の推奨するバージョンに合わせておく。推奨バージョンは
Heroku Ruby Support | Heroku Dev Center
に書かれている。
現段階(2021-08-14)でいえば、推奨バージョンは2.6.8, 2.7.4, 3.0.2のどれかである。どれにすればよいかは正直わからないが、自分は2.7.4を選択した(これまで2.7.0を利用していたので)。
2. Railsの学習サービス
Railsガイドは自分には難しかったので、Railsチュートリアルの無料で見られる版を利用している。インストール関連については、上の記事で既にインストール済みのものについては読み飛ばしてよい。
ただ、Gemfileの編集については必ず言われた通りに行うこと。多くのエラーが生じる危険がある。
2.1 rails server
時にエラーが出る場合
Webpacker configuration file not found app/config/webpacker.yml. Please run rails webpacker:install
というエラーが出た場合、webpackerがインストールされていない可能性がある。
rails webpacker:install
を実行して、
Done in 23.99s. Webpacker successfully installed 🎉 🍰
のようなメッセージが出たらインストールできている。
参考 qiita.com
2.2 2章の演習4-1について
以下の演習について。
ユーザーのshowページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。同ファイル内の他のコードから文法を推測してみてください(コラム 1.2で紹介した技術の出番です)。うまく表示できたかどうか、/users/1 にアクセスして確認してみましょう。
最初、app/views/users/show.html.erb
を次のように記述してみたがうまくいかなかった。
<p> <%= if !@first_post.nil? then %> <strong>First post:</strong> <%= @first_post.content %> <%= end %> </p>
これは、<%= ~ %>
と<% ~ %>
の違いに起因するバグである。
以下のように、if文にあたる部分のみ<% ~ %>
と直したら改善した。
<p> <% if !@first_post.nil? then %> <strong>First post:</strong> <%= @first_post.content %> <% end %> </p>
余談
heroku logs
を間違えてheroku log
としてしまった際に「間違えてません?」と言ってくれて、しかも正しいコマンドを提示してくれるの親切だなぁ
$ heroku log › Warning: log is not a heroku command. Did you mean logs? [y/n]: y 2021-08-14T03:11:26.033581+00:00 app[web.1]: => Booting Puma (このあとログが永遠に続くが略)