Quepid ทำให้การปรับปรุงผลการค้นหาแอปของคุณเป็นกระบวนการทางวิศวกรรมที่ทำซ้ำได้และเชื่อถือได้ ซึ่งทั้งทีมสามารถเข้าใจได้ มันเกี่ยวข้องกับสามประเด็น:
การทำงานร่วมกันของเรามีกลิ่นเหม็น การสร้างความก้าวหน้าแบบองค์รวมในการค้นหาจำเป็นต้องอาศัยความร่วมมือเชิงลึกและข้ามสายงาน การส่งอีเมลหรือติดตามข้อกำหนดการค้นหาในสเปรดชีตไม่ได้ช่วยอะไร
การทดสอบการค้นหาเป็นเรื่องยาก การเปลี่ยนแปลงการค้นหาเป็นแบบข้ามส่วน: การเปลี่ยนแปลงส่วนใหญ่จะทำให้เกิดปัญหา การทดสอบเป็นเรื่องยาก: คุณไม่สามารถดำเนินการค้นหาได้หลายร้อยครั้งหลังจากการเปลี่ยนแปลงความเกี่ยวข้องทุกครั้ง
การวนซ้ำเป็นไปอย่างช้าๆ การก้าวไปข้างหน้าดูเหมือนเป็นไปไม่ได้ เพื่อหลีกเลี่ยงการเลื่อนถอยหลัง ความคืบหน้าจะช้า หลายคนยอมแพ้ในการค้นหา ทำให้ผู้ใช้ไม่สามารถค้นหาข้อมูลที่สำคัญได้
หากต้องการเรียนรู้เพิ่มเติม โปรดตรวจสอบเว็บไซต์ Quepid และวิกิ Quepid
หากคุณพร้อมที่จะเริ่มใช้งานทันที คุณสามารถใช้บริการ 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 และ 1,000 ให้ทำดังนี้
bin/docker r bundle exec thor sample_data:large_data
สิ่งนี้มีประโยชน์สำหรับการทดสอบความเครียด Quepid! โดยเฉพาะแอปพลิเคชั่นส่วนหน้า!
สุดท้ายนี้ หากต้องการรันโน้ตบุ๊ก Jupyter คุณต้องเรียกใช้:
bin/setup_jupyterlite
ตอนนี้เปิด Quepid ในเครื่องที่ http://localhost:
bin/docker server
เซิร์ฟเวอร์อาจใช้เวลาถึงหนึ่งนาทีในการตอบสนอง เนื่องจากจะรวบรวมทรัพย์สินส่วนหน้าทั้งหมดในการโทรครั้งแรก
เราได้สร้างสคริปต์ตัวช่วยเพื่อเรียกใช้และจัดการแอปผ่านนักเทียบท่าที่ล้อมรอบคำสั่ง docker-compose
คุณจะต้องติดตั้ง Ruby คุณยังคงสามารถใช้ 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
หมายเหตุ: การทดสอบกรรมจำเป็นต้องมีการคอมไพล์เนื้อหาล่วงหน้า ซึ่งจะเพิ่มเวลาจำนวนมากในการทดสอบ หากคุณเพียงทำการเปลี่ยนแปลงกับไฟล์ test/spec เท่านั้น ขอแนะนำให้คุณรันการทดสอบในโหมดนาฬิกา ( bin/docker r bin/rake karma:start
) ข้อแม้คือทุกครั้งที่คุณทำการเปลี่ยนแปลงไฟล์แอป คุณจะต้องเริ่มกระบวนการใหม่ (หรือใช้โหมดเรียกใช้ครั้งเดียว)
วิธีตรวจสอบไวยากรณ์ Ruby:
bin/docker r bundle exec rubocop
Rubocop มักจะสามารถแก้ไขปัญหาผ้าสำลีหลายอย่างโดยอัตโนมัติผ่าน --autocorrect-all
:
bin/docker r bundle exec rubocop --autocorrect-all
หากมี "Cop" ใหม่ตามที่พวกเขาเรียกกฎของตนซึ่งเราไม่ชอบ คุณสามารถเพิ่มลงในไฟล์ ./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
การดีบัก Ruby มักจะขึ้นอยู่กับสถานการณ์ วิธีที่ง่ายที่สุดคือการพิมพ์ออบเจ็กต์ไปยัง 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
gem จะถูกรวมไว้ด้วย ดู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 จะพยายามโหลดทุกไฟล์แยกกัน ซึ่งจะทำให้แอปพลิเคชันช้าลง และน่ารำคาญอย่างยิ่งในโหมดการพัฒนาเพื่อรอให้สคริปต์โหลด ซึ่งเป็นสาเหตุที่ปิดโดยค่าเริ่มต้น
PS: อย่าลืมรีสตาร์ทเซิร์ฟเวอร์เมื่อคุณเปลี่ยนการกำหนดค่า
นอกจากนี้ โปรดทราบว่าไฟล์ 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
คุณยังสามารถอัปเกรด gem ที่ไม่มีเวอร์ชันเฉพาะใน 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
เริ่มต้นแอปเป็น Daemon (-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
PS: ไม่จำเป็นต้องทำเช่นนั้นอีก
ไฟล์ docker-compose.yml
มีพร็อกซีย้อนกลับ nginx ที่ใช้ใบรับรองเหล่านี้ คุณสามารถเข้าถึง Quepid ได้ที่ https://localhost หรือ http://localhost (Quepid จะยังคงมีให้บริการผ่าน http บนพอร์ต 80)
เพิ่มเอกสาร dev ที่นี่!
นักพัฒนาปรับใช้ข้อมูลรับรองคอนโซลผู้ดูแลระบบของ 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
สำหรับส่วนประกอบ UI ทั้งหมดของเรา แพ็คเกจนี้เชื่อมโยงกับ 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 ทำงานใน localhost ????
ดูโพสต์บล็อกที่ยอดเยี่ยมนี้: 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
โดยที่ type เป็นหนึ่งในรายการต่อไปนี้:
admin
: บัญชีผู้ดูแลระบบrealisticActivity
: ผู้ใช้ที่มีกรณีต่างๆ ที่สาธิต Quepid รวมถึงกรณีสาธิตและหนังสือ Haystack Rating Party และเป็นสมาชิกของทีม 'OSC'100sOfQueries
: ผู้ใช้ที่มีกรณี Solr ที่มีแบบสอบถาม 100 รายการ (โดยปกติจะปิดใช้งาน)1000sOfQueries
: ผู้ใช้ที่มีเคส Solr ซึ่งมีแบบสอบถามมากกว่า 1,000 รายการ (โดยปกติจะปิดใช้งาน)oscOwner
: ผู้ใช้ที่เป็นเจ้าของทีม 'OSC'oscMember
: ผู้ใช้ที่เป็นสมาชิกของทีม 'OSC'ตรวจสอบไฟล์ Data Mapping เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างข้อมูลของแอป
สร้าง ERD ใหม่ผ่าน bin/docker r bundle exec rake erd:image
ตรวจสอบไฟล์โครงสร้างแอปเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการจัดโครงสร้าง Quepid
ตรวจสอบไฟล์เอกสารการปฏิบัติงานเพื่อดูข้อมูลเพิ่มเติมว่า Quepid สามารถดำเนินการและกำหนดค่าสำหรับบริษัทของคุณได้อย่างไร
Quepid จะเป็นไปไม่ได้หากปราศจากการสนับสนุนจากบุคคลและองค์กรต่างๆ มากมาย
เราขอขอบคุณ Erik Bugge และทีมงานของ Kobler โดยเฉพาะที่ให้การสนับสนุนฟีเจอร์ Only Rated ที่เปิดตัวใน Quepid 6.4.0
Quepid ไม่ใช่โอเพ่นซอร์สเสมอไป! ตรวจสอบเครดิตสำหรับรายชื่อผู้ร่วมโครงการ
หากคุณต้องการให้ทุนในการพัฒนาฟีเจอร์ใหม่สำหรับ Quepid โปรดติดต่อ!