إعادة تحميل كود Rails تلقائيًا داخل حاويات التطوير

سجلات Rails بعد إجراء بعض التغييرات:

[DEV]: تم تحرير الملفات التي لم يتم تحميلها تلقائيًا. جارٍ إعادة تشغيل الخادم...
       - app/controllers/admin/admin_controller.rb
إعادة تشغيل UNICORN
I, [2025-09-19T16:35:33.289558 #1735]  INFO -- : تم إعادة #<Process::Status: pid 2207 exit 0> worker=0
I, [2025-09-19T16:35:33.289638 #1735]  INFO -- : تم إعادة #<Process::Status: pid 2214 exit 0> worker=1
I, [2025-09-19T16:35:33.289701 #1735]  INFO -- : تم إعادة #<Process::Status: pid 2226 exit 0> worker=2
I, [2025-09-19T16:35:33.289718 #1735]  INFO -- : اكتمل الرئيسي
  TRANSACTION (0.1ms)  BEGIN

في طرفية أخرى، إذا أرسلت طلبًا، فإن curl يتوقف ببساطة:

$ curl 127.0.0.1:3000
# لا يحدث شيء

في الطرفية التي شغلت فيها bin/rails s، أحتاج إلى كتابة ctrl + c:

تم مسح 2 مقياس
^C تم تلقي إشارة INT
جارٍ الإغلاق
جارٍ إنهاء الخيوط الهادئة للكبسولة الافتراضية
الجدول الزمني يخرج...
جارٍ تشغيل حدث الهدوء
جارٍ تشغيل حدث الإغلاق
جارٍ الإيقاف المؤقت للسماح بانتهاء المهام...
وداعًا!
I, [2025-09-19T16:39:36.317846 #4843]  INFO -- : جارٍ تحديث قائمة Gem
بدء مراقب تغيير CSS
  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
تحميل بيئة التطوير (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"]