يجعل Quepid تحسين نتائج البحث في تطبيقك عملية هندسية متكررة وموثوقة يمكن للفريق بأكمله فهمها. ويتناول ثلاث مسائل:
تعاوننا سيئ. إن تحقيق تقدم شامل في البحث يتطلب تعاونًا عميقًا ومتعدد الوظائف. إن إرسال رسائل البريد الإلكتروني أو تتبع متطلبات البحث في جداول البيانات لن يفي بالغرض.
اختبار البحث صعب. تغييرات البحث شاملة: معظم التغييرات سوف تسبب مشاكل. الاختبار صعب: لا يمكنك إجراء مئات من عمليات البحث بعد كل تغيير في الصلة.
التكرارات بطيئة ويبدو المضي قدمًا مستحيلًا. ولتجنب الانزلاق إلى الوراء، يكون التقدم بطيئًا. يتخلى الكثيرون ببساطة عن البحث، مما يحرم المستخدمين من وسائل العثور على المعلومات المهمة.
لمعرفة المزيد، يرجى مراجعة موقع Quepid وموقع Quepid wiki.
إذا كنت مستعدًا للتعمق في الأمر، فيمكنك استخدام خدمة Hosted Quepid الآن أو اتباع خطوات التثبيت لإعداد مثيل Quepid الخاص بك.
فيما يلي المعلومات المتعلقة بتطوير مشروع Quepid مفتوح المصدر، في المقام الأول للأشخاص المهتمين بتوسيع ما يمكن أن يفعله Quepid!
تستغرق عملية التزويد من جهاز تم إنشاؤه بالفعل ما بين 3 إلى 4 دقائق تقريبًا. يستغرق التزويد من الصفر حوالي 20 دقيقة.
تأكد من تثبيت Docker. انتقل هنا https://www.docker.com/community-edition#/download للحصول على تعليمات التثبيت. ويتم إطلاق تطبيق Docker.
للتثبيت باستخدام Brew اتبع الخطوات التالية:
brew cask install docker
brew cask install docker-toolbox
ملاحظة: قد تتلقى تحذيرًا بشأن الثقة في Oracle في المحاولة الأولى. افتح تفضيلات النظام > الأمان والخصوصية، وانقر فوق الزر السماح لـ Oracle، ثم حاول مرة أخرى تثبيت docker-toolbox
قم بتشغيل البرنامج النصي للإعداد المحلي المستند إلى Ruby لإعداد صور Docker الخاصة بك:
bin/setup_docker
إذا كنت تريد إنشاء بعض الحالات التي تحتوي على 100 و1000 من الاستعلامات، فقم بما يلي:
bin/docker r bundle exec thor sample_data:large_data
وهذا مفيد لاختبار التحمل Quepid! وخاصة تطبيق الواجهة الأمامية!
وأخيرًا، لتشغيل دفاتر ملاحظات Jupyter، عليك تشغيل:
bin/setup_jupyterlite
الآن قم بتشغيل Quepid محليًا على http://localhost:
bin/docker server
قد يستغرق الأمر ما يصل إلى دقيقة حتى يستجيب الخادم لأنه يجمع جميع أصول الواجهة الأمامية في المكالمة الأولى.
لقد أنشأنا برنامجًا نصيًا مساعدًا لتشغيل التطبيق وإدارته من خلال عامل الإرساء الذي يلتف حول أمر docker-compose
. سوف تحتاج إلى تثبيت روبي. لا يزال بإمكانك استخدام docker compose
مباشرةً، ولكن بالنسبة للأشياء الأساسية، يمكنك استخدام ما يلي:
bin/docker server
أو bin/docker s
bin/docker bash
أو bin/docker ba
bin/docker console
أو bin/docker c
bin/docker run [COMMAND]
أو bin/docker r [COMMAND]
bin/docker daemon
أو bin/docker q
bin/docker destroy
أو bin/docker d
bin/docker r rails test:frontend
bin/docker r rails test
أثناء تشغيل التطبيق ضمن رئيس العمال، لن ترى سوى سجل الطلبات، وللحصول على تسجيل أكثر تفصيلاً، قم بتشغيل ما يلي:
tail -f log/development.log
هناك ثلاثة أنواع من الاختبارات التي يمكنك إجراؤها:
تقوم هذه الاختبارات بتشغيل الاختبارات من جانب Rails (بشكل أساسي وحدات تحكم API والنماذج):
bin/docker r rails test
قم بتشغيل ملف اختبار واحد عبر:
bin/docker r rails test test/models/user_test.rb
أو حتى اختبار واحد في ملف اختبار عن طريق تمرير رقم السطر!
bin/docker r rails test test/models/user_test.rb:33
إذا كنت بحاجة إلى إعادة تعيين إعداد قاعدة بيانات الاختبار الخاصة بك، فقم بتشغيل:
bin/docker r bin/rake db:drop RAILS_ENV=test
bin/docker r bin/rake db:create RAILS_ENV=test
عرض السجلات التي تم إنشاؤها أثناء مجموعة الاختبار config.log_level = :debug
في test.rb
ثم ذيل ملف السجل عبر:
tail -f log/test.log
للتحقق من بناء جملة JS:
bin/docker r rails test:jshint
يجري اختبارات للجانب الزاوي. هناك وضعان لاختبارات الكارما:
bin/docker r rails karma:run
bin/docker r bin/rake karma:start
ملاحظة: تتطلب اختبارات الكارما تجميع الأصول مسبقًا، مما يضيف قدرًا كبيرًا من الوقت إلى التشغيل الاختباري. إذا كنت تُجري تغييرات فقط على ملفات الاختبار/المواصفات، فمن المستحسن إجراء الاختبارات في وضع المراقبة ( bin/docker r bin/rake karma:start
). التحذير هو أنه في أي وقت تقوم فيه بإجراء تغيير على ملفات التطبيق، سيتعين عليك إعادة تشغيل العملية (أو استخدام وضع التشغيل الفردي).
للتحقق من بناء جملة روبي:
bin/docker r bundle exec rubocop
يمكن لـ Rubocop في كثير من الأحيان التصحيح التلقائي للعديد من مشكلات الوبر التي يواجهها عبر --autocorrect-all
:
bin/docker r bundle exec rubocop --autocorrect-all
إذا كان هناك "شرطي" جديد لا نحبه كما يسمون قواعدهم، فيمكنك إضافته إلى ملف ./rubocop.yml
.
إذا كنت تريد إجراء جميع الاختبارات دفعة واحدة (قبل الالتزام والدفع على سبيل المثال)، فما عليك سوى تشغيل هذين الأمرين:
bin/docker r rails test
bin/docker r rails test:frontend
لسبب ما، لا يمكننا تشغيل كليهما باستخدام أمر واحد، على الرغم من أننا يجب أن نكون قادرين على ذلك! .
إذا كنت تريد إنشاء الكثير من الاستعلامات لمستخدم للاختبار، فقم بتشغيلها
bin/docker r bin/rake db:seed:large_cases
سيكون لديك مستخدمان، [email protected]
و [email protected]
للاختبار معهم.
إذا كنت ترغب في اختبار دفاتر ملاحظات Jupyterlite، أو العمل مع حالة وكتاب "حقيقيين"، فقم بالتشغيل
bin/docker r bundle exec thor sample_data:haystack_party
سيكون لديك الكثير من بيانات المستخدم من كتاب حفلة تصنيف Haystack وحالة العمل معها. هذه البيانات مصدرها الحالة العامة https://app.quepid.com/case/6789/try/12?sort=default وhttps://app.quepid.com/books/25
يعتمد تصحيح أخطاء روبي عادةً على الموقف، وأبسط طريقة هي طباعة الكائن إلى STDOUT:
puts object # Prints out the .to_s method of the object
puts object . inspect # Inspects the object and prints it out (includes the attributes)
pp object # Pretty Prints the inspected object (like .inspect but better)
في تطبيق Rails، يمكنك استخدام المسجل للإخراج:
Rails . logger object . inspect
إذا لم يكن ذلك كافيًا وكنت تريد تشغيل مصحح الأخطاء، فسيتم تضمين جوهرة debug
لذلك. راجع https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem.
لدينا أيضًا الجوهرة derailed
والتي تساعدك على فهم مشكلات الذاكرة.
bin/docker r bundle exec derailed bundle:mem
أثناء تشغيل التطبيق، يمكنك تصحيح أخطاء جافا سكريبت باستخدام أداتك المفضلة، بالطريقة التي كنت تفعلها دائمًا.
سيتم تجميع ملفات جافا سكريبت في ملف واحد، باستخدام مسار أصول Rails.
يمكنك إيقاف ذلك عن طريق تبديل العلامة التالية في config/environments/development.rb
:
# config.assets.debug = true
config . assets . debug = false
ل
config . assets . debug = true
# config.assets.debug = false
نظرًا لوجود عدد كبير جدًا من ملفات Angular JS في هذا التطبيق، وفي وضع debug
، سيحاول Rails تحميل كل ملف على حدة، مما يؤدي إلى إبطاء التطبيق، ويصبح الانتظار حتى يتم تحميل البرامج النصية أمرًا مزعجًا حقًا في وضع التطوير. وهذا هو سبب إيقاف تشغيله افتراضيًا.
ملاحظة: لا تنس إعادة تشغيل الخادم عند تغيير التكوين.
يُرجى أيضًا ملاحظة أن الملفات secure.js
و application.js
و admin.js
تُستخدم لتحميل جميع تبعيات JavaScript وCSS عبر مسار Rails Asset. إذا كنت تقوم بتصحيح أخطاء Bootstrap، فستحتاج إلى ملفات فردية. لذا استبدل //= require sprockets
بـ //= require bootstrap-sprockets
.
يمكن نسخ docker-compose.override.yml.example
إلى docker-compose.override.yml
واستخدامه لتجاوز متغيرات البيئة أو العمل مع نسخة محلية من مكتبة JS splainer-search أثناء التطوير المحدد في docker-compose.yml
. تم تضمين المثال. ما عليك سوى تحديث المسار إلى splainer-search
من خلال الخروج المحلي الخاص بك! https://docs.docker.com/compose/extends/
يحتوي هذا التطبيق على طريقتين لتشغيل البرامج النصية: rake
& thor
.
يعد Rake رائعًا للمهام البسيطة التي تعتمد على بيئة التطبيق، والمهام الافتراضية التي تأتي افتراضيًا مع Rails.
في حين أن Thor هي أداة أكثر قوة لكتابة البرامج النصية التي تستوعب الوسائط بشكل أفضل بكثير من Rake.
لمعرفة المهام المتوفرة، قم بتشغيل:
bin/docker r bin/rake -T
ملاحظة : استخدام bin/rake
يضمن أن إصدار rake
الذي يتم تشغيله هو الإصدار المقفل على Gemfile.lock
الخاص بالتطبيق (لتجنب التعارض مع الإصدارات الأخرى التي قد تكون مثبتة على نظامك). وهذا يعادل bundle exec rake
.
مهام أشعل النار الشائعة التي قد تستخدمها:
# db
bin/docker r bin/rake db:create
bin/docker r bin/rake db:drop
bin/docker r bin/rake db:migrate
bin/docker r bin/rake db:rollback
bin/docker r bin/rake db:schema:load
bin/docker r bin/rake db:seed
bin/docker r bin/rake db:setup
# show routes
bin/docker r bin/rails routes
# tests
bin/docker r rails test
bin/docker r rails test:frontend
bin/docker r bin/rake test:jshint
الاطلاع على المهام المتاحة:
bin/docker r bundle exec thor list
توجد وثائق إضافية في وثائق التشغيل.
ستحتاج إلى تكوين Elasticsearch لقبول الطلبات من المتصفح باستخدام CORS. لتمكين CORS، قم بإضافة ما يلي إلى ملف التكوين الخاص بـ Elasticsearch. عادة، يوجد هذا الملف بالقرب من ملف Elasticsearch القابل للتنفيذ على config/elasticsearch.yml
.
http.cors :
enabled : true
allow-origin : /https?://localhost(:[0-9]+)?/
اطلع على مزيد من التفاصيل حول الويكي على https://github.com/o19s/quepid/wiki/Troubleshooting-Elasticsearch-and-Quepid
عادة ما تقوم ببساطة بما يلي:
bin/docker r yarn add foobar
أو
bin/docker r yarn upgrade foobar
والذي سيؤدي إلى تثبيت/ترقية وحدة Node، ثم حفظ هذه التبعية في package.json
.
ثم قم بالتحقق من ملفات package.json
و yarn.lock
المحدثة.
استخدم bin/docker r yarn outdated
لمعرفة الحزم التي يمكنك تحديثها !!!!
عادة ما تقوم ببساطة بما يلي:
bin/docker r bundle add foobar
والذي سيقوم بتثبيت Gem الجديد، ثم حفظ هذه التبعية في Gemfile
.
يمكنك أيضًا ترقية جوهرة لا تحتوي على إصدار محدد في Gemfile
عبر:
bin/docker r bundle update foobar
يمكنك إزالة جوهرة عن طريق:
bin/docker r bundle remove foobar
ثم تحقق من ملفات Gemfile
و Gemfile.lock
المحدثة. لحسن التدبير، قم بتشغيل bin/setup_docker
.
لفهم ما إذا كان لديك جواهر قديمة، قم بتشغيل:
bin/docker r bundle outdated --groups
قم بإلغاء التعليق في docker-compose.yml
على الإعداد - RAILS_RELATIVE_URL_ROOT=/quepid-app
ثم افتح http://localhost:3000/quepid-app.
من المفترض أن تساعدك هذه الخطوات على إعداد نسخة إنتاجية وتشغيلها محليًا (مقابل بنية المطور) لـ Quepid.
docker build -t o19s/quepid -f Dockerfile.prod .
قد يحدث هذا خطأ عند التشغيل لأول مرة. حاول مرة أخرى إذا حدث ذلك
docker tag o19s/quepid o19s/quepid:$QUEPID_VERSION
docker compose up -d mysql
docker compose run --rm app bin/rake db:setup
قم بتحديث ملف docker-compose.prod.yml الخاص بك لاستخدام صورتك عن طريق تحديث إصدار الصورة في image: o19s/quepid:10.0.0
قم بتشغيل التطبيق إما كبرنامج خفي (-d) أو كحاوية نشطة
docker compose up [-d]
يوجد دليل .ssl
يحتوي على ملفات المفاتيح والشهادات المستخدمة لـ SSL. هذه شهادة تم إنشاؤها ذاتيًا للاستخدام في التطوير فقط!
تم إنشاء المفتاح/الشهادة باستخدام الأمر التالي:
openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout .ssl/localhost.key -out .ssl/localhost.crt
ملاحظة: ليس من الضروري أن تفعل ذلك مرة أخرى.
يحتوي ملف docker-compose.yml
على وكيل عكسي nginx يستخدم هذه الشهادات. يمكنك الوصول إلى Quepid على https://localhost أو http://localhost. (سيظل Quepid متاحًا عبر http على المنفذ 80.)
أضف مستندات التطوير هنا!
يقوم المطور بنشر بيانات اعتماد وحدة تحكم المشرف Keycloak وهي admin
password
.
فيما يلي مثال لإنشاء الترحيل:
bin/docker r bundle exec bin/rails g migration FixCuratorVariablesTriesForeignKeyName
تليها bin/docker r bundle exec rake db:migrate
يجب عليك أيضًا تحديث بيانات التعليقات التوضيحية للمخطط عن طريق تشغيل bin/docker r bundle exec annotations
عند تغيير المخطط.
قم بتعديل الملف Gemfile
ثم قم بتشغيل:
bin/docker r bundle install
ستشاهد Gemfile.lock
محدثًا، تابع وتحقق منه ثم أدخل Gemfile
إلى Git.
نحن نستخدم Angular 1 للتطبيق التفاعلي الأساسي، وكجزء من ذلك نستخدم حزمة angular-ui-bootstrap
لجميع مكونات واجهة المستخدم الخاصة بنا. ترتبط هذه الحزمة بإصدار Bootstrap 3.
نقوم باستيراد Bootstrap 3 CSS مباشرةً عبر الملف bootstrap3.css
.
بالنسبة لبقية Quepid، نستخدم Bootstrap 5! يتم تضمين ذلك عبر package.json
باستخدام NPM. راجع admin.js
للاطلاع على السطر //= require bootstrap/dist/js/bootstrap.bundle
.
نستخدم حاليًا Rails Sprockets لتجميع كل شيء، ولكن لدينا أحلام بالانتقال إلى Propshaft، وربما js-bundling.
وجه الخط aller هو من FontSquirrel، ويتم تحويل .ttf إلى تنسيق .woff2.
قم بتشغيل ./bin/setup_jupyterlite
لتحديث ملف الأرشيف ./jupyterlite/notebooks.gz
. يؤدي هذا أيضًا إلى إعداد الملفات الثابتة في الدليل ./public/notebooks
. ومع ذلك، حتى لا نتحقق من مئات الملفات، نتجاهل هذا الدليل من Github. في asset:precompile
قمنا بفك ضغط الملف ./jupyterlite/notebooks.gz
بدلاً من ذلك. يعمل هذا على Heroku وصورة Docker للإنتاج.
لتحديث إصدار Jupyterlite، قم بتحرير Dockerfile.dev
و Dockerfile.prod
وقم بتحديث إصدار pip install
.
سؤال؟ هل يعمل jupyterlite في المضيف المحلي ؟؟؟؟
راجع منشور المدونة الرائع هذا: https://keygen.sh/blog/how-to-implement-api-key-authentication-in-rails-without-devise/.
يوجد مسار لنشر التعليمات البرمجية إلى موقع http://quepid-staging.herokuapp.com الذي يتم تشغيله عند الالتزامات الناجحة بـ main
.
إذا كانت لديك عمليات ترحيل معلقة، فستحتاج إلى تشغيلها عبر:
heroku run bin/rake db:migrate -a quepid-staging
heroku restart -a quepid-staging
يتم إنشاء الحسابات التالية من خلال عملية bin/setup_docker
. وجميعهم يتبعون التنسيق التالي:
email: quepid+[type]@o19s.com
password: password
حيث يكون النوع واحدًا مما يلي:
admin
: حساب المسؤولrealisticActivity
: مستخدم لديه حالات مختلفة توضح Quepid، بما في ذلك الحالة والكتاب التجريبي لـ Haystack Rating Party وهو عضو في فريق "OSC".100sOfQueries
: مستخدم لديه حالة Solr تحتوي على 100s من الاستعلامات (عادةً ما يتم تعطيلها)1000sOfQueries
: مستخدم لديه حالة Solr تحتوي على 1000s من الاستعلامات (عادةً ما يتم تعطيلها)oscOwner
: المستخدم الذي يملك فريق "OSC"oscMember
: مستخدم عضو في فريق "OSC"تحقق من ملف تعيين البيانات للحصول على مزيد من المعلومات حول بنية بيانات التطبيق.
أعد بناء ERD عبر bin/docker r bundle exec rake erd:image
تحقق من ملف بنية التطبيق للحصول على مزيد من المعلومات حول كيفية تنظيم Quepid.
تحقق من ملف وثائق التشغيل لمزيد من المعلومات حول كيفية تشغيل Quepid وتكوينه لشركتك.
لن يكون Quepid ممكنًا بدون مساهمات العديد من الأفراد والمنظمات.
وعلى وجه التحديد، نود أن نشكر Erik Bugge والعاملين في Kobler لتمويل الميزة ذات التصنيف الوحيد التي تم إصدارها في Quepid 6.4.0.
لم يكن Quepid مفتوح المصدر دائمًا! تحقق من الاعتمادات للحصول على قائمة المساهمين في المشروع.
إذا كنت ترغب في تمويل تطوير ميزة جديدة لـ Quepid، فاتصل بنا!