はじめに
Rails 6.0.3.5
ruby 2.6.5
yarn 1.22.10
にてデプロイを実行した。
アプリ概要
投稿サイト
・jwtによるログインログアウト機能
・投稿機能(ログイン後投稿可、投稿者のみ削除編集可)
・プロフィール編集機能
エラー内容
デプロイは成功し、
ログイン機能は正常に動いたのだが、
POST機能、EDIT機能を行う際に、
検証ツールのconsoleにて、
401 Unauthorized
エラーが出現、
なぜ、ログインしているにも関わらず401が出現するのか、
protect_from_forgery with: :null_session
になっていることを確認し、
skip_before_action :verify_authenticity_token
を追加。
すると、今度は、
500 (Internal Server Error)
が出現、
$ heroku logs
にてエラー内容を確認したところ、
undefined method `post' for nil:NilClass
というエラー内容、
また、プロフィール編集時のエラーは、
undefined method `update' for nil:NilClass
となりました、、、
原因検索1
ローカル環境で動いているため、
[post]や[update]が定義されていないということは考えにくい。
def create
post = current_user.posts.create!(post_params) #ここのcurrent_user
render json: post, serializer: postSerializer
end
postする前のcurrent_userが渡っていなと推測。
なぜcurrent_userが取れていないのか、
local環境とproduction環境の違いをチェック。
config/enviroments/development.rbとproduction.rbの違いを確認した。
認証に関わりそうな部分はなく、
特にここが原因ではないみたい。
原因検索2
jwtが送信できているかを、ブラウザ検証ツールのnetworkタブで確認する.
Authorization: Bearer にて、トークンが到達していることを確認。
原因検索3
ローカル環境で、問題なく動いているため、
再度、herokuにて問題がないことを確認、
herokuのsettings/Reveal Config Varsにて、、、、、
master_keyの設定をしていませんでした。。。
secret_key_baseを設定し安心し切っていましたが、
思わぬところに原因がありました。
補足
rails & vueのデプロイ
(herokuにpushした後)につきましては、
ログアウト → ログインをしてから、挙動を確かめるようにしましょう。
最後に
初心者のうちは思いもよらないところにミスがある可能性が高いので、
深読みしすぎず、やるべきことをしっかりやってあるかの確認を、
怠らないように気をつけたいと思います。
ご視聴いただきありがとうございます。
誰かの役に立てば幸いです。