الحفاظ على بيئة تطوير محدثة

أحاول إعداد جهاز تطوير جديد ويفتقد bundler. أنظر إلى https://raw.githubusercontent.com/discourse/install-rails/master/linux وأرى أنه لا يزال يقوم بتثبيت ruby_version="2.7.6". وإعادة تشغيل هذا البرنامج النصي لم تبدو أبدًا طريقة موثوقة لتحديث جهاز التطوير.

كيف يفعل الآخرون ذلك؟ هل يستخدم الجميع حقًا https://meta.discourse.org/t/install-discourse-for-development-using-docker/102009؟

لتطوير لوحة التحكم الخاصة بي، أقوم بتمرير الكثير من الإعدادات في سطر الأوامر باستخدام برنامج نصي pfaffmanager-discourse والذي سيقوم أيضًا بسحب أحدث إصدار من discourse وترحيل قاعدة البيانات. أعتقد أنه يمكنني تدبير ذلك بطريقة ما في إصدار docker أيضًا.

هل أنا فقط من المدرسة القديمة وأعتقد أنه يجب أن يكون لدي مثيل تطوير أصلي بدلاً من القيام بذلك في docker؟

أستخدم ansible لإعداد أجهزة جديدة طوال الوقت، الشيء الوحيد الذي يفتقده هذا الإعداد هو برنامج نصي لتطوير discourse. هل يرغب أي شخص آخر في شيء كهذا؟ هل يمكننا نقله إلى core بحيث يمكنك فقط استنساخ discourse ثم تشغيل كتيب تشغيل للحصول على Ruby و imagemagick وأي شيء آخر بالإصدارات المناسبة؟

إعجاب واحد (1)

على حد علمي، يستخدم كل شخص تقريبًا في فريق التطوير بيئة تطوير أصلية.

لقد كنت أستخدم asdf لإدارة الإصدارات للعديد من الأدوات التي أستخدمها، لذا بالنسبة لي هو مجرد

asdf install ruby 3.1.3
asdf local ruby 3.1.3

لتشغيل Discourse في Ruby الجديد.

مفيد جدًا بالنسبة لي منذ أن كنت أقوم بقياس أداء Discourse عبر إصدارات Ruby والتعامل مع ترقية Ruby.

5 إعجابات

لقد انتقلت مؤخرًا إلى حل Docker Compose في الوقت الحالي، مع تحديد Dockerfile لبناء Discourse الذي أعمل عليه. بالنسبة للأشياء الأساسية، يعمل هذا بشكل جيد حتى الآن ولكنه أبطأ بشكل واضح من بيئة Ubuntu مباشرة “على المعدن” …

إعجابَين (2)

خارج الموضوع، نعم، أنا معجب جدًا بـ YJIT!!.. هل يدعم Discourse لغة Ruby 3.2 بالكامل بالفعل؟

4 إعجابات

هل هناك مستودع سري يستخدمونه جميعًا للحفاظ على تحديث الأشياء؟

شكرًا! asdf هو مساعدة ضخمة! أعتقد أنني رأيته من قبل ولكني أردت تجنب مدير حزم آخر. إذا كان جيدًا بما يكفي لك، فأنا معك تمامًا.

ويبدو أن nodejs قديم في البرنامج النصي للتثبيت أيضًا. التثبيت الأخير لديه v18.12.1 ويقوم البرنامج النصي بتثبيت 16.

لذا يبدو أن

          git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.2
          asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
          asdf plugin add imagemagick
          asdf install imagemagick 7.1.0-55
          asdf plugin add nodejs
          asdf install nodejs 18.12.1

بافتراض أنك تحصل على هذا في ملف .bashrc الخاص بك (أو ما شابه) بطريقة ما:

. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash

وتثبيت هذه الجواهر:

      - bundler
      - discourse_theme
      - minitar
      - listen
      - rb-fsevent
      - rb-inotify
      - ffi
      - multipart-post
      - tty-prompt
      - pastel
      - tty-color
      - tty-reader
      - tty-screen
      - advancecomp
      - gifsicle
      - jpegoptim
      - libjpeg-progs
      - optipng
      - pngcrush
      - pngquant
      - jhead
      - rails

بعض هذه قد أضفتها لسبب آخر غير Discourse، على الرغم من أنني لست متأكدًا تمامًا.

و

apt-get install -y git build-essential libxslt1-dev libcurl4-openssl-dev libksba8 \
libksba-dev libreadline-dev libssl-dev zlib1g-dev libsnappy-dev \
sqlite3 libsqlite3-dev postgresql postgresql-server-dev-all \
postgresql-contrib libpq-dev redis-server golang-go
go get github.com/mailhog/MailHog

(ربما ليس بهذا الترتيب) يقترب جدًا. Redis الحالي المضمن مع Ubuntu جيد بما يكفي لـ 99٪ من المطورين (إنه 7.0.7 وليس 6.x) أوه! 7.0.7 هو ما هو مضمن الآن. ولكن هناك مكون إضافي asdf لـ redis أيضًا.

مثل هذا البرنامج النصي سيكون بعد ذلك سهل الصيانة في النواة عند حدوث زيادة في الإصدار في node أو imagemagick أو Ruby، وبعد ذلك يمكن للمطور الكسول تشغيل هذا البرنامج النصي مرة واحدة في الأسبوع أو مع كل سحب جديد والحصول على بيئة تطوير حالية. مع ساعة أو ثلاث ساعات يمكن لشخص ذكي جعله متعدد المنصات بما يكفي لـ Linux و Mac / homebrew و Windows / WSL في غضون ساعتين. لحسن الحظ، ليس لدي وصول سهل إلى Windows هذه الأيام، لذلك لست متطوعًا.

لكنني أعتقد أنه إذا راقبت التغييرات في discourse_docker ربما سألاحظ متى تم تحديثها وقد تكون الإضافات التي قمت بتجميعها إلى مجموعة أدوات Ansible newmachine الخاصة بي تقوم بالمهمة الآن.

شكرًا على النصيحة! أعتقد أنه يمكنني الآن الحصول على إعداد تطوير على أي جهاز بأمر واحد.

إعجاب واحد (1)

بينما يمكنني أن أرى مدى روعة أن يتم التعامل مع كل شيء تلقائيًا، بالنسبة لي فإن التعامل مع بيئة التطوير الخاصة بي والتحديثات وكل شيء هو جزء أساسي من الوظيفة.

إنه أمر سيء للقادمين الجدد، وهذا هو المكان الذي تتألق فيه أدوات مثل GitHub Codespaces، ولكن بالنسبة للأشخاص الذين يعملون في تطوير Discourse يوميًا، فإن فهم بيئة التطوير والقدرة على معالجتها مفيد لفهم كيف تتناسب الأجزاء معًا.

إعجابَين (2)

حسنًا، الشخص الذي يقوم بقياس أداء روبي بعيد كل البعد عن المطور النمطي، ولكن هذا عادل! أعتقد أننا جميعًا مختلفون قليلاً في كيفية إدارتنا للأشياء على أي حال.\n\nبفضل توصيتك بـ asdf، أعتقد أنه بفضلها سأتمكن من الحفاظ على الأمور منظمة على أجهزتي المختلفة.

إعجاب واحد (1)

لقد قمت بمعظم أعمال التوافق بالفعل في دفعة 3.1، لذا نحن مستعدون بالفعل للانتقال إلى 3.2 وسنفعل ذلك قريبًا.

4 إعجابات

فالكو، هل يمكنني التحقق من هذا معك؟:

rake dev:populate

يبدو أنه ينتج الآن خطأ:

Psych::DisallowedClass: Tried to load unspecified class: Date

هل هذا متعلق بإصدار Ruby أو Rails الجديد؟

المزيد:

أتساءل عن مدى تحسن TTFB مع YJIT الجديد

إعجاب واحد (1)

يبدو أن هذه المشكلة قد تم حلها في أحدث إصدار، شكرًا لكل من قام بإصلاحها! :pray: إنها أداة أساسية للمساعدة في بناء أدوات اختبار فعالة.

إعجاب واحد (1)

تم إغلاق هذا الموضوع تلقائيًا بعد 30 يومًا من آخر رد. لم تعد الردود الجديدة مسموح بها.