تثبيت Discourse على macOS للتطوير

أواجه بعض المشاكل في إعداد discourse للتطوير على جهاز M1 Mac الخاص بي.

تفشل الجواهر fast_xs و gc_tracer في التثبيت مع أخطاء متشابهة تقريبًا. لقد قمت بلصق رسالة الخطأ الخاصة بـ fast_xs أدناه. هل يمكن لأحد المساعدة؟

Building native extensions. This could take a while...
ERROR:  Error installing fast_xs:
	ERROR: Failed to build gem native extension.

    current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
/Users/sisirkoppaka/.rubies/ruby-3.2.0/bin/ruby -I /Users/sisirkoppaka/.rubies/ruby-3.2.0/lib/ruby/site_ruby/3.2.0 extconf.rb
checking for assert.h... yes
creating Makefile

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7 clean

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7
compiling fast_xs.c
fast_xs.c:144:39: error: incompatible function pointer types passing 'VALUE (VALUE)' (aka 'unsigned long (unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long)') [-Wincompatible-function-pointer-types]
  144 |         array = rb_rescue(unpack_utf8, self, unpack_uchar, self);
      |                                              ^~~~~~~~~~~
/Users/sisirkoppaka/.rubies/ruby-3.2.0/include/ruby-3.2.0/ruby/internal/iterator.h:364:62: note: passing argument to parameter 'r_proc' here
  364 | VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
      |                                                              ^
1 error generated.
make: *** [fast_xs.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0 for inspection.
Results logged to /Users/sisirkoppaka/.gem/ruby/3.2.0/extensions/arm64-darwin-22/3.2.0-static/fast_xs-0.8.0/gem_make.out```

كيف تم حل هذا؟

عند التنفيذ

bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

بعد بدء تشغيل خوادم Redis و Postgres، أحصل على الخطأ التالي.

fe_sendauth: no password supplied
Couldn't create 'discourse_development' database. Please check your configuration.
rake aborted!

عندما أفعل هذا دون بدء تشغيل خوادم Redis و Postgres الخاصة بي، أحصل على الخطأ التالي.

bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
Couldn't connect to Redis
rake aborted!

هل يمكن لأحد أن يخبرني ماذا أفعل، لقد ضعت.

شكرًا

حتى الآن تمكنت من حلها بالأوامر التالية:

bundle config build.fast_xs --with-cflags="-Wno-incompatible-pointer-types"
bundle config build.gc_tracer --with-cflags="-Wno-incompatible-pointer-types"
bundle install

لاحظ أننا قررنا إسقاط هاتين الجوهرتين غير الضروريتين في

و

3 إعجابات

بعد استدعاء هذا الخيار، كيف يمكن إيقاف الخادم؟

يبدو أن هذا لم يعد يعمل، أحصل على:

fatal: couldn't find remote ref master

ولا تعمل النسخة التي تستبدل التغييرات المحلية (بعد منشورين).

هل لديك أي أفكار حول كيفية ترقية تثبيت Discourse على macOS؟

تمت إعادة تسمية master إلى main منذ فترة. جرب

cd ~/discourse
git pull origin main
4 إعجابات

شكراً سيمون، هذا يساعد.
تمكنت من تشغيل أمر git ولكن في مكان ما على طول الطريق كسرت بيئة التطوير الخاصة بي. انتهى بي الأمر الآن ببيئة تطوير معطلة، إنها تعرض صفحة Discourse dev الرئيسية الخاصة بي ولكن لا يبدو أن أي شيء يعمل (إنشاء موضوع جديد يستمر في الدوران).
ما هي أسهل طريقة لإعادة الضبط أو إجراء تثبيت نظيف لتثبيت Discourse dev الخاص بي؟
حاولت إعادة تشغيل أوامر التثبيت في بداية هذا الموضوع (يتعطل الأمر عند أمر pnpm install). حاولت أيضًا تشغيل rake db:drop db:create db:migrate الذي اقترحه Arpit في وقت سابق في هذا الموضوع، دون نجاح أيضًا.

تمكنت من تحديث تثبيتات pnpm و node الخاصة بي عن طريق تشغيل npm install -g pnpm و brew install node مما سمح لي بإعادة تشغيل تعليمات التثبيت مرة أخرى. ومع ذلك ، ما زلت أواجه خطأ البناء التالي:

Module not found: Error: Can't resolve '@ember/debug' in '/Users/pieces/discourse/app/assets/javascripts/node_modules/ember-tracked-storage-polyfill/addon/index.js'

هل قمت بتشغيل pnpm install بعد تشغيل npm install -g pnpm؟

التفاصيل حول التغيير لاستخدام pnpm لإدارة الحزم موجودة هنا: Discourse core is switching to pnpm for JS package management.

إعجابَين (2)

نعم فعلت، ما زلت أتلقى الخطأ.

لقد قمت بالخطوات التالية:

  1. قمت بتحديث الحزم على جهاز Mac الخاص بي (أعدت تشغيل البرنامج النصي الأولي)
  2. قمت بتشغيل bundle install
  3. قمت بتشغيل pnpm install
  4. قمت بتشغيل bundle exec rake db:create
    bundle exec rake db:migrate
    RAILS_ENV=test bundle exec rake db:create db:migrate
  5. قمت بتشغيل bundle exec rails server
  6. قمت بتشغيل bin/ember-cli في نافذة طرفية منفصلة

تشغيل الخطوة 6 يرمي الخطأ.

بالنظر إلى التفاصيل من الرابط الذي قدمته، يبدو أن وحدات Node المُدارة بواسطة Yarn لم يتم تحويلها بشكل صحيح إلى pnpm؟ يتحدث عن إزالة مجلد ‘node_modules’ يدويًا. ومع ذلك، يجب أن يتم التعامل مع هذا مع سحب git الجديد، أليس كذلك؟

يرجى الاطلاع أدناه على الخطأ من الخطوة 6.

يمكنني مشاركة سجل الخطأ المذكور إذا كان ذلك سيساعد في العثور على السبب.

تجدر الإشارة إلى أنه ليس لدي نظام macOS للاختبار عليه. لقد قمت مؤخرًا بتحديث نسخة Discourse المحلية الخاصة بي على نظام Arch Linux. أتوقع أن تكون طريقة التعامل مع تبعيات JavaScript متشابهة على كلا النظامين.

لا أعتقد أن هذا صحيح. لا يتم تتبع دليل node_modules بواسطة git. يتم تثبيت وحدات node عند تشغيل pnpm install.

لا يمكنني ضمان صحة هذا، ولكن إذا كنت أواجه الخطأ، فسأقوم بإزالة وإعادة تثبيت التبعيات باستخدام:

rm -rf node_modules app/assets/javascripts/*/node_modules

pnpm install

أعتقد أن ember-tracked-storage-polyfill موجود مباشرة في discourse/node_modules، ولكن يجب أن يكون من الآمن تشغيل الأمر الكامل الذي نشرته أعلاه.

يمكنك أيضًا محاولة تشغيل pnpm install مع تسجيل مفصل إذا أرجع أخطاء:

pnpm install --reporter=silent --loglevel=verbose

لقد قمت للتو بإزالة وإعادة تثبيت التبعيات، وقد نجحت الأوامر المقدمة بشكل جيد. إنها تزيل وتثبت pnpm بدون أخطاء.

ومع ذلك، عندما أقوم بتشغيل bin/ember-cli، لا يزال يعطي نفس الخطأ.

هل هناك طريقة لإزالة تثبيت بيئة التطوير الخاصة بـ Discourse بالكامل وسحب نظيف من Git وتشغيل التثبيت النظيف؟

أنا على ما يرام تمامًا مع فقدان البيانات من بيئة التطوير الخاصة بي.

يمكنك تشغيل rm -rf ~/discourse لإزالة كود مصدر Discourse بالكامل. ثم اتبع دليل التثبيت من خطوة “استنساخ Discourse”: Install Discourse on macOS for development.

إعجابَين (2)

لقد نجح الأمر!

شكرًا لصبرك يا سيمون، أقدر عدم استسلامك :slight_smile:

إعجابَين (2)

عظيم! أتوقع أن المشكلة كانت متعلقة بالأصول المخزنة مؤقتًا والتي تم تجميعها مسبقًا في الدليل /discourse/tmp/cache/assets/sprockets/. ربما كان يمكن حل المشكلة عن طريق تشغيل:\n\nrm -rf ~/discourse/tmp/cache/\n\nهذا مجرد تخمين مع ذلك.

3 إعجابات

ليس لدي الكثير من الحظ في اتباع هذه التعليمات. فهي لا توفر بيئة عمل حيث أنني أحصل على خطأ 500 عندما أحاول تثبيت أي شيء (ملحق، سمة، مكون سمة). يبدو أن المعالج لا يعمل بشكل صحيح. لقد قمت بالتثبيت حوالي 10 مرات الآن وقمت بإلغاء تثبيت وإعادة تثبيت التبعيات. عندما أقوم بتشغيل autospec، أحصل على العديد من حالات الفشل ولكن ليس الكثير من المعلومات عنها. نرحب بأي أفكار حول كيفية تشغيل هذا الشيء بشكل وظيفي.

شكرا!

لكل من بدأ من Discourse Development README وجاء إلى هنا – إذا كنت تقوم بإعداد تبعياتك للمرة الأولى، فإنني أوصي بـ PostgreSQL 14+، على الرغم من أنه يقول PostgreSQL 13 في ملف README.

لماذا؟ عند إعداد قاعدة البيانات الخاصة بك وتشغيل عمليات الترحيل، ستفشل عند محاولة الوصول إلى امتداد pgvector في إحدى عمليات الترحيل. وتثبيت pgvector لـ PostgreSQL 13 يمثل بعض الألم. ولكن إذا قمت بتثبيت PostgreSQL 14 ثم pgvector، فسينجح كل شيء.

أوصي بـ Homebrew لكليهما:

brew install postgresql@14
brew install pgvector

أيضًا! ستحصل على خطأ في المرة الأولى التي تقوم فيها بتشغيل خادم Rails إذا لم تقم بتثبيت ImageMagick. (أعلم أنه يقول إنه اختياري في أعلى هذا الدليل)

آمل أن يساعد هذا… شخصًا ما!

3 إعجابات

الإنتاج هو بالفعل 15، أوصي بذلك أو 16.

إعجابَين (2)