gemを更新したらサーバーを再起動しないと反映されない🥲
解決策
dockerなしの通常開発環境の場合
railsを再起動する
$ rails restart
docker環境の場合
docker compose up -d
で「web」をバックエンドで起動している状態を想定。
$ docker compose exec web bundle install #gemを更新。これだけじゃ足りない😭
$ docker compose restart #dockerの再起動、これが必要😁
ちなみに、、、
gem更新後にrailsを再起動すれば良いので以下でもOK。
$ docker compose exec web bundle install #gemを更新。これだけじゃ足りない😭
$ docker compose exec web rails restart #dockerコンテナでrailsを再起動する😁
今回、こんな感じでハマった
「ActiveModelSerializers」 という、Rubyでjsonを整形してくれるライブラリを導入した時に詰まりました😇
https://github.com/rails-api/active_model_serializers
やりたかったこと
Postmanでリクエストを送り、UserモデルからUser ID のみjsonで返却させたい。
↓この記事でやってることです
実際にやったこと
docker compose exec web bundle install
にてgemを更新...
{
"status": 500,
"error": "Internal Server Error",
"exception": "#<NameError: uninitialized constant ActiveModel::Serializer\n\nclass UserSerializer < ActiveModel::Serializer\n ^^^^^^^^^^^^\nDid you mean? ActiveModel::Serializers>",
"traces": {
"Application Trace": [
...
idをjsonで返却するだけなのに500エラー!!
uninitialized constant
と表示されているので、クラスが読み込めてないのか?と思い調べながら1時間ほど四苦八苦😥
一から環境構築してやり直してみるか〜と思ってdocker compose down
。
その後、やっぱ環境構築がめんどくせーとなって、もう一度docker compose up -d
してチャレンジしようとしたら上手く言ってた(笑)
[
{
"id": 1
}
]
何かうまく動いてなかったら、とりあえず再起動しようと誓ったrails初心者でしたw
余談
↓今回の失敗に関しての記事
後で「gem 更新されない」で調べたらヒットしました。
ずっとライブラリ側のワードで検索して悩んでましたが、どう調べるとこの記事に早くたどり着けたのでしょうか🤔
コメントよりアドバイスくださると嬉しいです😆