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 설치를 다시 시도하세요.
Docker 이미지를 설정하려면 로컬 Ruby 기반 설정 스크립트를 실행하세요.
bin/setup_docker
100개 및 1000개의 쿼리가 있는 일부 사례를 생성하려면 다음을 수행하십시오.
bin/docker r bundle exec thor sample_data:large_data
이는 스트레스 테스트에 유용합니다. Quepid! 특히 프론트 엔드 애플리케이션!
마지막으로 Jupyter Notebook을 실행하려면 다음을 실행해야 합니다.
bin/setup_jupyterlite
이제 http://localhost에서 로컬로 Quepid를 실행하십시오.
bin/docker server
첫 번째 호출에서 모든 프런트엔드 자산을 컴파일하므로 서버가 응답하는 데 최대 1분이 걸릴 수 있습니다.
docker-compose
명령을 래핑하는 docker를 통해 앱을 실행하고 관리하기 위한 도우미 스크립트를 만들었습니다. 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
foreman에서 앱을 실행하는 동안 요청 로그만 표시됩니다. 더 자세한 로깅을 보려면 다음을 실행하세요.
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
test.rb
에서 테스트 세트 config.log_level = :debug
중에 생성된 로그를 확인한 후 다음을 통해 로그 파일을 추적합니다.
tail -f log/test.log
JS 구문을 확인하려면 다음을 수행하세요.
bin/docker r rails test:jshint
Angular 측면에 대한 테스트를 실행합니다. 카르마 테스트에는 두 가지 모드가 있습니다.
bin/docker r rails karma:run
bin/docker r bin/rake karma:start
참고: Karma 테스트에서는 자산을 사전 컴파일해야 하므로 테스트 실행에 상당한 시간이 추가됩니다. 테스트/사양 파일만 변경하는 경우 watch 모드( bin/docker r bin/rake karma:start
)에서 테스트를 실행하는 것이 좋습니다. 주의할 점은 앱 파일을 변경할 때마다 프로세스를 다시 시작해야 한다는 것입니다(또는 단일 실행 모드를 사용해야 합니다).
Ruby 구문을 확인하려면 다음을 수행하세요.
bin/docker r bundle exec rubocop
Rubocop은 종종 --autocorrect-all
통해 발생하는 많은 Lint 문제를 자동 수정할 수 있습니다.
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
gem도 있습니다.
bin/docker r bundle exec derailed bundle:mem
애플리케이션을 실행하는 동안 즐겨 사용하는 도구를 사용하여 항상 해왔던 방식으로 자바스크립트를 디버깅할 수 있습니다.
Javascript 파일은 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
파일은 Rails Asset 파이프라인을 통해 모든 JavaScript 및 CSS 종속성을 로드하는 데 사용됩니다. Bootstrap을 디버깅하는 경우 개별 파일이 필요합니다. 따라서 //= require sprockets
//= require bootstrap-sprockets
로 바꾸세요.
docker-compose.override.yml.example
docker-compose.override.yml
에 복사하고 이를 사용하여 환경 변수를 재정의하거나 docker-compose.yml
에 정의된 개발 중에 splainer-search JS 라이브러리의 로컬 복사본으로 작업할 수 있습니다. 예시가 포함되어 있습니다. 지역 결제를 통해 splainer-search
경로를 업데이트하세요! https://docs.docker.com/compose/extends/
이 애플리케이션에는 rake
& thor
라는 두 가지 스크립트 실행 방법이 있습니다.
Rake는 애플리케이션 환경에 의존하는 간단한 작업과 Rails에 기본적으로 제공되는 기본 작업에 적합합니다.
반면 Thor는 Rake보다 인수를 훨씬 더 잘 받아들이는 스크립트를 작성하는 데 더 강력한 도구입니다.
어떤 rake 작업을 사용할 수 있는지 확인하려면 다음을 실행하세요:
bin/docker r bin/rake -T
참고 : bin/rake
를 사용하면 실행 중인 rake
버전이 앱의 Gemfile.lock
에 잠겨 있는지 확인합니다(시스템에 설치되어 있을 수 있는 다른 버전과의 충돌을 피하기 위해). 이는 bundle exec rake
와 동일합니다.
사용할 수 있는 일반적인 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
추가 문서는 운영 문서에 있습니다.
CORS를 사용하여 브라우저의 요청을 수락하도록 Elasticsearch를 구성해야 합니다. CORS를 활성화하려면 elasticsearch의 구성 파일에 다음을 추가하세요. 일반적으로 이 파일은 config/elasticsearch.yml
의 elasticsearch 실행 파일 근처에 있습니다.
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
에 특정 버전이 없는 gem을 업그레이드할 수도 있습니다.
bin/docker r bundle update foobar
다음을 통해 보석을 제거할 수 있습니다:
bin/docker r bundle remove foobar
그런 다음 업데이트된 Gemfile
및 Gemfile.lock
파일을 체크인하세요. 좋은 측정을 위해 bin/setup_docker
실행하세요.
오래된 gem이 있는지 알아보려면 다음을 실행하세요.
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
앱 image: o19s/quepid:10.0.0
에서 이미지 버전을 업데이트하여 이미지를 사용하도록 docker-compose.prod.yml 파일을 업데이트하세요.
데몬(-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 역방향 프록시가 포함되어 있습니다. https://localhost 또는 http://localhost에서 Quepid에 액세스할 수 있습니다. (Quepid는 포트 80의 http를 통해 계속 사용할 수 있습니다.)
여기에 개발 문서를 추가하세요!
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
확인하고 Git에서 Gemfile
확인하세요.
우리는 핵심 대화형 애플리케이션에 Angular 1을 사용하고 그 일부로 모든 UI 구성 요소에 대해 angular-ui-bootstrap
패키지를 사용합니다. 이 패키지는 Bootstrap 버전 3과 연결되어 있습니다.
bootstrap3.css
파일을 통해 Bootstrap 3 CSS를 직접 가져옵니다.
나머지 Quepid에서는 Bootstrap 5를 사용합니다! 이는 NPM을 사용하는 package.json
을 통해 포함됩니다. //= require bootstrap/dist/js/bootstrap.bundle
줄은 admin.js
참조하세요.
우리는 현재 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/)을 참조하세요.
main
에 대한 성공적인 커밋에서 실행되는 http://quepid-staging.herokuapp.com 사이트에 대한 코드 배포 파이프라인이 있습니다.
보류 중인 마이그레이션이 있는 경우 다음을 통해 실행해야 합니다.
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
: Haystack Rating Party 데모 사례 및 도서 등 Quepid를 시연하는 다양한 사례를 보유한 사용자이자 'OSC' 팀의 구성원입니다.100sOfQueries
: 수백 개의 쿼리가 있는 Solr 케이스가 있는 사용자(일반적으로 비활성화됨)1000sOfQueries
: 수천 개의 쿼리가 있는 Solr 케이스가 있는 사용자(일반적으로 비활성화됨)oscOwner
: 'OSC' 팀을 소유한 사용자oscMember
: 'OSC' 팀에 속한 사용자앱의 데이터 구조에 대한 자세한 내용은 데이터 매핑 파일을 확인하세요.
bin/docker r bundle exec rake erd:image
통해 ERD를 다시 빌드하세요.
Quepid의 구조에 대한 자세한 내용은 앱 구조 파일을 확인하세요.
귀하의 회사에서 Quepid를 운영하고 구성하는 방법에 대한 자세한 내용은 운영 문서 파일을 확인하세요.
Quepid는 많은 개인과 단체의 기여가 없었다면 불가능했을 것입니다.
특히 Quepid 6.4.0에 출시된 Only Rated 기능에 자금을 지원해준 Erik Bugge와 Kobler 직원들에게 감사의 말씀을 전하고 싶습니다.
Quepid가 항상 오픈소스였던 것은 아닙니다! 프로젝트 기여자 목록의 크레딧을 확인하세요.
Quepid의 새로운 기능 개발에 자금을 지원하고 싶다면 연락하세요!