LoginSignup
0
0

More than 1 year has passed since last update.

RailsでGemを更新したら再起動しましょうという話【初学者向け】

Last updated at Posted at 2022-06-11

gemを更新したらサーバーを再起動しないと反映されない🥲

解決策

dockerなしの通常開発環境の場合

railsを再起動する

terminal
$ rails restart 

docker環境の場合

docker compose up -dで「web」をバックエンドで起動している状態を想定。

terminal
$ docker compose exec web bundle install   #gemを更新。これだけじゃ足りない😭
$ docker compose restart                   #dockerの再起動、これが必要😁

ちなみに、、、
gem更新後にrailsを再起動すれば良いので以下でもOK。

terminal
$ 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 更新されない」で調べたらヒットしました。
ずっとライブラリ側のワードで検索して悩んでましたが、どう調べるとこの記事に早くたどり着けたのでしょうか🤔
コメントよりアドバイスくださると嬉しいです😆

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0