يا إلهي، d/cleanup خطير. هذه طريقة جيدة لخسارة الكثير من عمل Docker الذي لا علاقة له بـ Discourse على الإطلاق…
لقد بدأت في إجراء بعض التعديلات اليدوية مثل ما يلي والتي كانت تعمل ولكن كانت هناك دائمًا المزيد والمزيد من مشكلات الأذونات، لذلك قررت التوقف عن محاولة إخماد الحرائق.
mkdir app/assets/javascripts/plugins
mkdir tmp
sudo chown 1000:1000 tmp
sudo chown 1000:1000 app/assets/javascripts/plugins
سأستخدم المستخدم المضيف بمعرف مستخدم (uid) يبلغ 1000 وأراهن على أن الأمر سيعمل الآن، لكن هذا يكشف حقًا عن قصور في كيفية إجراء تطوير Discourse على ما يبدو.
… ونعم، لقد نجح ذلك.
في حالة “tmp” هذه، يمكن أن تكون في وحدة تخزين Docker مسماة أو مجهولة. مع الإضافات، قد يكون من المفيد وجود هذه الوحدة المخزنة ولكن ستحتاج أذونات نظام الملفات المضيف إلى التغيير لدعم الكتابة.
لا أعتقد أنه من الآمن افتراض أن كل مطور سيستخدم معرف مستخدم (uid) يبلغ 1000.
مرحباً يا رفاق، هل تعرفون كيفية تشغيل التطوير باستخدام إصدار قديم من discourse؟ أعرف أنه في discourse المباشر يمكننا تعيين الإصدار في app.yml. لكنني لا أعرف كيف أفعل ذلك في التطوير باستخدام docker. أريد تشغيل التطوير على آخر إصدار مستقر v2.7.10. شكراً لمساعدتكم.
فقط قم بإلغاء تسجيل فرع أو تثبيت في git. (الطريقة التي أفعل بها ذلك هي البحث في جوجل
ستحتاج إلى إسقاط قاعدة البيانات وإنشائها وترحيلها بعد الرجوع إلى إصدار أقدم.
مرحباً شكراً @pfaffman ،
لقد قمت بسحب git حديث لـ discourse وتحققت من فرع الإصدار “stable”. (وهو يستخدم علامة الإصدار discourse v2.7.10)
لقد قمت بتشغيل dev init وضبطت البريد الإلكتروني وكلمة المرور للمستخدم المسؤول
d/boot_dev --init
وقمت بتشغيل rails server، سيستمع على المنفذ 3000
d/rails s
ثم قمت بتشغيل ember-cli
cd app/assets/javascripts/discourse
yarn
yarn run ember serve --proxy "http://localhost:3000"
يمكن فتح تطوير discourse على “http://localhost:4200”
ومع ذلك، واجهت مشكلة عند تسجيل الدخول كمستخدم مسؤول (الذي أنشأته عند تشغيل “d/boot_dev --init”)
ظهرت رسالة “خطأ غير معروف” على الشاشة، مع الخطأ التالي في /logs
ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: function max(boolean) does not exist
LINE 1: ..._rank, MAX(user_badges.created_at) AS created_at, MAX(user_b...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
)
lib/freedom_patches/ams_include_without_root.rb:49:in `include!'
app/controllers/application_controller.rb:495:in `serialize_data'
app/controllers/application_controller.rb:504:in `render_serialized'
app/controllers/session_controller.rb:611:in `login'
app/controllers/session_controller.rb:337:in `create'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
app/controllers/application_controller.rb:395:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/missing_avatars.rb:23:in `call'
lib/middleware/turbo_dev.rb:34:in `call'
هل لديك أي خبرة مع هذا الخطأ؟ أو ربما كانت خطواتي في تشغيل التطوير على إصدار سابق خاطئة؟
أعتقد أنك بحاجة إلى rm -r قاعدة البيانات. لست متأكدًا من مكانها، ولكن من المحتمل أن تكون في OP.
أهلاً بالجميع،
لقد بدأت من جديد تمامًا. كل شيء يسير على ما يرام، أحصل على بيئة تطوير نظيفة يمكنني تسجيل الدخول إليها.
ثم أقوم بإضافة عدد قليل من الإضافات لمطابقة بيئة الإنتاج الخاصة بي وسحب أحدث نسخة احتياطية.
أقوم بتحميلها، وأحاول استعادتها إلى بيئة التطوير، وأحصل على خطأ المصادقة النظير مرة أخرى. لقد قدمت خطأ، ولكن حتى الآن لا يوجد رد. هل يمكن لأي شخص محاولة تكرار ذلك؟ لقد رأيت مشكلات مماثلة في التعليقات السابقة لهذا المنشور، لذلك أعتقد أنني لست وحدي في هذا؟
[2021-11-29 19:43:39] بدأ 'koen' الاستعادة!
[2021-11-29 19:43:39] تمييز الاستعادة على أنها قيد التشغيل...
[2021-11-29 19:43:39] التأكد من وجود /src/tmp/restores/default/2021-11-29-194339...
[2021-11-29 19:43:39] نسخ الأرشيف إلى دليل tmp...
[2021-11-29 19:43:39] استخراج ملف التفريغ...
[2021-11-29 19:43:40] التحقق من البيانات الوصفية...
[2021-11-29 19:43:40] الإصدار الحالي: 20211124161346
[2021-11-29 19:43:40] الإصدار المستعاد: 20211123033311
[2021-11-29 19:43:40] تمكين وضع القراءة فقط...
[2021-11-29 19:43:40] إيقاف مؤقت لـ sidekiq...
[2021-11-29 19:43:40] الانتظار لمدة تصل إلى 60 ثانية لـ Sidekiq لإنهاء تشغيل المهام...
[2021-11-29 19:43:46] إنشاء وظائف مفقودة في مخطط discourse_functions...
[2021-11-29 19:43:46] استعادة ملف التفريغ... (قد يستغرق هذا بعض الوقت)
[2021-11-29 19:43:47] psql: خطأ: فشل الاتصال بالخادم على المقبس "/var/run/postgresql/.s.PGSQL.5432": FATAL: فشلت مصادقة النظير للمستخدم "postgres"
[2021-11-29 19:43:47] استثناء: فشل psql: psql: خطأ: فشل الاتصال بالخادم على المقبس "/var/run/postgresql/.s.PGSQL.5432": FATAL: فشلت مصادقة النظير للمستخدم "postgres"
[2021-11-29 19:43:47] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-29 19:43:47] محاولة التراجع...
[2021-11-29 19:43:47] لم تكن هناك حاجة للتراجع
[2021-11-29 19:43:47] تنظيف الأشياء...
[2021-11-29 19:43:47] إسقاط الوظائف من مخطط discourse_functions...
[2021-11-29 19:43:47] إزالة دليل tmp '/src/tmp/restores/default/2021-11-29-194339'...
[2021-11-29 19:43:47] إلغاء إيقاف sidekiq مؤقتًا...
[2021-11-29 19:43:47] تمييز الاستعادة على أنها انتهت...
[2021-11-29 19:43:47] إخطار 'koen' بنهاية الاستعادة...
[2021-11-29 19:43:51] انتهى!
مرحباً،
لدي مشكلة تبدو أنها تنبع من الانقسام بين المنفذين 3000 و 4200. لست متأكدًا تمامًا من كيفية ارتباطهما ببعضهما البعض، ولكن فهمي هو أن 3000 هو الخادم و 4200 وكيل له من Ember CLI. يعمل المنفذ 4200 بشكل جيد، إلا أنه في بعض الأحيان، وتحديدًا عند الاستجابة برمز 302، تحتوي رؤوس الاستجابة على معرفات URI تستخدم المنفذ 3000 بدلاً من 4200. كنت أحاول تحديدًا تشغيل OAuth2 مع موفر مخصص كما هو موضح هنا، ووجود المنفذ 3000 في بعض الاستجابات يكسر سير عمل OAuth2. لا يوجد منفذ 3000 في أي من إعدادات OAuth2 الخاصة بي، ويجب أن يأتي داخليًا من الخادم.
هل واجه أي شخص هذا النوع من المشكلات من قبل؟ هل تعرف كيفية إعداد بيئة تحاكي إصدار الإنتاج بشكل أوثق؟
على الرغم من ذلك، حاولت أيضًا إعداد إصدار الإنتاج محليًا، ولكنه يتطلب تسجيل نطاق وبريد إلكتروني كاملين ولا يبدو ودودًا جدًا للبيئات المحلية.
شكرا لك.
تحديث، حاولت مرة أخرى اتباع مسار “الصفحة النظيفة” وهذه المرة باستخدام جهاز آخر. الآن أواجه مشكلة لأنني لا أملك معرف المستخدم (UID) 1000 الذي تم ذكره سابقًا في هذا الموضوع، المشاركة 100 بواسطة @dcook. أتفق على أن افتراض أن معرف المستخدم (UID) = 1000 خطأ ويشكل خللاً. هل قمت بالإبلاغ عنه على هذا النحو؟
على جهازي الرئيسي، لا يزال خلل أذونات مستخدم Postgress قائمًا، وقد أثرت هذه المشكلة هنا: Backup restore failing on clean dev docker env: FATAL: Peer authentication failed for user “postgres”.
@rishabh ما هو رأيك في هاتين النقطتين؟ أحببت الانتقال إلى الطريقة المعتمدة على دوكر (Docker)، سريعة ونظيفة. ولكن الآن على جهازين مختلفين، يبدو الأمر وكأنه طريق مسدود وأتساءل عما يمكنني المساهمة به لحل المشكلة. أتساءل أيضًا عن دورة حياة الأخطاء. هل يتم استلامها، مراجعتها، رفضها أو قبولها، تأجيلها، حلها، إلخ؟
سأذهب الآن لمحاولة إعداد بيئة التطوير الأصلية لمعرفة ما إذا كان بإمكاني جعلها تعمل.
مرحباً. هذه هي المرة الأولى التي أقوم فيها بتثبيت discourse باستخدام docker على نظام mac.
أولاً، أنا آسف على لغتي الإنجليزية.. ![]()
لقد قمت بالفعل بتشغيل
d/boot_dev --init
ثم حصلت على خطأ بأن المنفذ: 3000 مستخدم بالفعل. لذلك قمت بتغيير المنفذ 30030:3000 (الملف: bin/docker/boot_dev)
بعد ذلك، بدأت هذا الرمز
d/boot_dev --init
# في طرفية واحدة:
d/rails s
# وفي طرفية منفصلة
d/ember-cli
سؤالي هو
-
عند تشغيل رمز
d/rails s. يمكنني فتح صفحة بدء discourse على ‘localhost:30030’. إذا كنت أرغب فقط في فتح discourse واستخدام المنفذ 30030 (إعادة توجيه المنفذ)، فهل يمكنني إنهاء عملية التثبيت؟؟ لا أعرف ما هوd/rails s،d/ember-cli. … -
وعملية
d/rail sطويلة جداً. أنا قلق بشأن ما هو الخطأ.. هل هذا صحيح؟ أو هلd/rails sوd/ember-cliهي عمليات في الخلفية أثناء استضافة discourse؟
شكراً لك. ![]()
مرحباً،
في بيئة التطوير، هل من الممكن تعديل إعدادات التكوين التي يجب وضعها في app.yml؟
السؤال يتعلق بشكل أساسي بتعديل DISCOURSE_ENABLE_CORS؛ مجرد إضافة مصادر cors في واجهة المسؤول لم يساعد في حل خطأ cors.
شكراً لك.
يبدو أن إنشاء ملف discourse.conf ضمن /config قد حل المشكلة:
enable_cors = true
المعلومات مأخوذة من ملف الإعداد الافتراضي: discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub
مرحباً يا شباب، لقد واجهت مشكلة عند تهيئة بيئة تطوير Discourse باستخدام Docker.
إصدار Discourse الإنتاجي لدي يستخدم الإصدار v2.8.0، لذا أحتاج إلى تشغيل التطوير المحلي باستخدام v2.8.0.
أستخدم Docker الذي يعمل على نظام Mac OS لإعداد بيئة التطوير الخاصة بي.
ما قمت به في الأمر هو:
git clone https://github.com/discourse/discourse.git
cd discourse
git checkout v2.8.0
d/boot_dev --init
لقد واجهت هذا الخطأ بعد أن وصل رمز التهيئة إلى قسم ترحيل قاعدة البيانات:
ترحيل قاعدة البيانات...
== 20220104053343 AddBookmarkPolymorphicColumns: ترحيل ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: حدث خطأ، تم إلغاء هذا الترحيل وجميع الترحيلات اللاحقة:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
قبل شهرين، قمت بتشغيل التطوير باستخدام الإصدار 2.8.0 ولم أواجه أي مشكلة، ولكن قبل بضعة أيام بدأت أواجه هذه المشكلة.
هل يواجه أي منكم نفس المشكلة؟
إذا قمت بترحيل قاعدة البيانات بإصدار أحدث من Discourse، فستحتاج إلى إسقاط قاعدة بيانات جديدة وإنشائها للحصول على الترحيل الأقدم.
لقد قمت باستنساخ جديد تمامًا وبدأت التطوير باستخدام الإصدار 2.8.0. لا ينبغي أن يكون هناك أي بيانات حتى الآن.
لقد أخطأت أثناء التثبيت، هل يمكنني معرفة ما إذا كانت هناك أي طريقة ممكنة لإلغاء تثبيت كل شيء ثم إعادة القيام به من البداية؟
مرحباً، لقد وجدت هذا الخطأ غريباً. هل لدى أي شخص خبرة في حل هذه المشكلة؟ شكراً مقدماً!
يظهر عند تشغيل d/boot_dev --init.
Migrating database...
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
لقد تلقيت نفس رسالة الخطأ أثناء تشغيل d/boot_dev --init، وجربت d/rake db:migrate RAILS_ENV=development، ونفس الخطأ مرة أخرى:
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
لقد واجهت هذه المشكلة أيضًا. وقمت بحلها عن طريق التراجع عن هذا الالتزام
يعمل بشكل مثالي بالنسبة لي. شكرًا.