Hmmmm. That’s a tricky one, because the symlink needed to be deleted, otherwise the Docker mount fails (as it cannot overwrite the existing file).
I had a bit of a google around for solutions, and found an interesting solution which would dereference the symlink and copy the symlink’s target into the specified directory, but couldn’t find anything that would create a Docker volume mount, thus preserving the dynamic link and bi-directional synchronisation. Happy to be steered towards a solution as this would be a neat feature to have.
أنا أبدأ للتو في تطوير أول إضافة صغيرة لي لدي بعض الأسئلة وآمل أن يتمكن أحدكم من المساعدة…
السؤال الأول: هل يهم إذا استخدمنا ما هو مذكور في هذا الدليل، أم يجب أن نهدف حقًا إلى استخدام مولد الإضافات؟
لم يتم تغطية هذا في الدليل، ولكن كيف يمكننا جعل البيانات متاحة لقوالبنا من ملف plugin.rb؟
لنفترض على سبيل المثال أنني أريد عرض رسالة ترحيب عشوائية في منفذ الإضافة topic-above-posts كلما زار شخص ما موضوعًا، مع اختيار الرسالة عشوائيًا من مصفوفة موجودة في plugin.rb… كيف يمكنني إرسال هذه البيانات إلى القالب؟ والذي أفترض أيضًا أنه سيوضع هنا:
plugins/my_new_plugin/assets/javascripts/discourse/templates/connectors/topic-above-posts/my_new_plugin.hbs (هل هذا صحيح؟)
يُعد استخدام مولد الإضافات طريقة ممتازة بشكل عام للبدء ومعرفة كيفية هيكلة الإضافة. أنصحك بذلك.
أما فيما يتعلق بكيفية إدخال كود Ruby في الواجهة الأمامية: فهذان تطبيقان مختلفان. سيتعين على تطبيق الواجهة الأمامية (Ember) طلبه من الخادم (Rails) بطريقة ما. عادةً ما نقوم بذلك عبر استدعاء AJAX، ولكن يمكنك أيضًا إضافة شيء ما إلى SiteSerializer ليتم إرساله تلقائيًا كجزء من بيانات المنتدى.
بخلاف ذلك، ستحتاج إلى البحث عن كيفية إضافة مسار/متحكم في Rails وإرسال الرسائل بصيغة JSON.
هل تعلم إذا كانت هناك أي دروس تعليمية حول هذا؟ أم أن هناك إضافة بسيطة (أو حتى إضافة وهمية) يمكننا الاطلاع عليها لتوجهنا في الاتجاه الصحيح؟ (إذا لم يكن الأمر كذلك، هل يمكنك إعداد هذا لنا بسرعة في مكان ما من فضلك؟ أعتقد أنه سيساعد الكثير من الأشخاص )
بالإضافة إلى ذلك.. هل لديك أي أفكار أخرى حول تأليف كتاب؟ يمكنني أن أضعك في اتصال مع شخص ما إذا كنت مهتمًا
شكرًا لك على المجاملة، لكنني مشغول جدًا لدرجة لا تسمح لي بالتفكير في كتابة كتاب. بالإضافة إلى ذلك، كتب التقنية لها نطاق محدود للغاية. أولئك الذين أعرفهم ممن كتبوا كتبًا يقولون إنك تفعل ذلك من أجل نفسك، وليس من أجل المال
لا يمكنني التفكير في إضافة بسيطة لإرجاع شيء من جانب الخادم. discourse-tooltips يضيف مسارًا ثم يستخدمه للحصول على معاينات للمواضيع عند تمرير الماوس، لذا قد يكون ذلك مفيدًا.
على سبيل المثال، لنفترض أننا نريد كتابة إضافة لمعالجة البيانات cooked في post قبل عرضها، فإننا نتوقع وجود hook واحد على الأقل في البداية وآخر في النهاية، مثل (على سبيل المثال):
display_post_start
display_post_complex
عندها، ستقوم إضافتنا plugin بـ hook في الكود عند hook location التي نختارها من القائمة أعلاه.
هل توجد قائمة بهذه plugin hooks وما هي الأسماء التي تُستخدم لهذه plugin hooks في DiscourseWorld؟
تحديث: لقد وجدت هذا:
git grep "plugin-outlet" -- "*.hbs"
ولكن لم أتمكن من رؤية أي outlet لتعديل محتوى المنشور cooked.
هل هناك دليل تعليمي حول إنشاء outlet خاص بنا، على سبيل المثال outlet لتعديل الجزء cooked من المنشورات؟
سأضيف أيضًا ملاحظة عند استخدام إعداد Docker حيث ستفشل التعليمات أعلاه بخطأ مشابه لـ
ambientimpact:~/.../Discourse/discourse$ d/rake plugin:create[neurocracy-date-rewrite]
Cloning 'https://github.com/discourse/discourse-plugin-skeleton' to '/src/plugins/neurocracy-date-rewrite'...
Initializing git repository...
Initialized empty Git repository in /src/plugins/neurocracy-date-rewrite/.git/
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <discourse@localhost>) not allowed
rake aborted!
Command failed with exit 128: git
/src/lib/tasks/plugin.rake:354:in `system'
/src/lib/tasks/plugin.rake:354:in `block (2 levels) in <main>'
/src/lib/tasks/plugin.rake:344:in `chdir'
/src/lib/tasks/plugin.rake:344:in `block in <main>'
Tasks: TOP => plugin:create
(See full trace by running task with --trace)
تحتاج أولاً إلى إعداد .gitconfig الخاص بك داخل الحاوية (غيّر البريد الإلكتروني والاسم حسب الحاجة) قبل محاولة إنشاء المكون الإضافي: