개발 컨테이너에서 Rails 코드가 자동 재로드되지 않음

일부 변경 사항을 적용한 후의 Rails 로그:

[DEV]: Edited files which are not autoloaded. Restarting server...
       - app/controllers/admin/admin_controller.rb
RESTARTING UNICORN
I, [2025-09-19T16:35:33.289558 #1735]  INFO -- : reaped #<Process::Status: pid 2207 exit 0> worker=0
I, [2025-09-19T16:35:33.289638 #1735]  INFO -- : reaped #<Process::Status: pid 2214 exit 0> worker=1
I, [2025-09-19T16:35:33.289701 #1735]  INFO -- : reaped #<Process::Status: pid 2226 exit 0> worker=2
I, [2025-09-19T16:35:33.289718 #1735]  INFO -- : master complete
  TRANSACTION (0.1ms)  BEGIN

다른 터미널에서 요청을 보내면 curl이 멈춰 있습니다:

$ curl 127.0.0.1:3000
# 아무 일도 일어나지 않음

bin/rails s를 실행한 터미널에서는 ctrl + c를 입력해야 합니다:

Flushed 2 metrics
^CGot INT signal
Shutting down
Terminating quiet threads for default capsule
Scheduler exiting...
Firing quiet event
Firing shutdown event
Pausing to allow jobs to finish...
Bye!
I, [2025-09-19T16:39:36.317846 #4843]  INFO -- : Refreshing Gem list
Starting CSS change watcher
  TranslationOverride Pluck (0.4ms)  SELECT "translation_overrides"."translation_key", "translation_overrides"."value" FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en'

이제 두 번째 터미널에서 curl이 예상대로 작동합니다:

$ curl 127.0.0.1:3000
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Discourse</title>
    <meta name="description" content="">

시도해 본 것들

devcontainer.json에는 다음과 같은 내용이 있습니다:

"image": "docker.io/discourse/discourse_dev:20250307-0016",

로컬 devcontainer.json을 다음과 같이 변경해 보았습니다:

"image": "docker.io/discourse/discourse_dev:release",

하지만 문제는 해결되지 않았습니다.

config/environments/development.rb에서

config.file_watcher = ActiveSupport::FileUpdateChecker

로 설정해 보았지만, 이 역시 문제를 해결하지 못했습니다.

Rails 서버를 시작하는 방법:

cd discourse
code . # "컨테이너에서 폴더 열기" 선택

VSCode 태스크를 사용하지 않으므로, 다른 터미널에서 다음을 실행합니다:

docker exec -ti -u discourse $ID bash
cd workspace/discourse/
bin/rail s

또한, app 폴더가 config.autoload_paths 안에 있을 것으로 예상했지만 실제로는 그렇지 않았습니다:

bin/rails console
Loading development environment (Rails 8.0.2.1)
[1] pry(main)> Rails.application.config.autoload_paths
=> ["/workspace/discourse/lib", "/workspace/discourse/lib/guardian", "/workspace/discourse/lib/i18n", "/workspace/discourse/lib/validators"]