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
Если вы хотите создать несколько случаев с сотнями и тысячами запросов, выполните следующие действия:
bin/docker r bundle exec thor sample_data:large_data
Это полезно для стресс-тестирования Quepid! Особенно интерфейсное приложение!
Наконец, чтобы запустить блокноты Jupyter, вам нужно запустить:
bin/setup_jupyterlite
Теперь запустите Quepid локально по адресу http://localhost:
bin/docker server
Ответ сервера может занять до минуты, поскольку он компилирует все внешние ресурсы при первом вызове.
Мы создали вспомогательный скрипт для запуска приложения и управления им через Docker, который окружает команду 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
Запускает тесты для стороны Angular. Есть два режима проверки кармы:
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
Если появился новый «Полицейский», как они называют свои правила, который нам не нравится, вы можете добавить его в файл ./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
. См. https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem.
Кроме того, у нас есть драгоценный камень derailed
, который поможет вам разобраться в проблемах с памятью.
bin/docker r bundle exec derailed bundle:mem
Во время работы приложения вы можете отлаживать JavaScript с помощью вашего любимого инструмента, как вы всегда это делали.
Файлы 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
используются для загрузки всех зависимостей 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.
Чтобы увидеть, какие 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
P.S. Повторно это делать не обязательно.
Файл 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.
Мы импортируем CSS Bootstrap 3 напрямую через файл 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, у которого есть сотни запросов (обычно отключено).1000sOfQueries
: пользователь с регистром Solr, который имеет тысячи запросов (обычно отключено).oscOwner
: пользователь, которому принадлежит команда OSC.oscMember
: пользователь, который является членом команды OSC.Ознакомьтесь с файлом сопоставления данных для получения дополнительной информации о структуре данных приложения.
Пересоберите ERD через bin/docker r bundle exec rake erd:image
Ознакомьтесь с файлом структуры приложения для получения дополнительной информации о структуре Quepid.
Ознакомьтесь с файлом эксплуатационной документации для получения дополнительной информации о том, как можно использовать и настраивать Quepid для вашей компании.
Quepid был бы невозможен без вклада многих людей и организаций.
В частности, мы хотели бы поблагодарить Эрика Багге и ребят из Kobler за финансирование функции Only Rated, выпущенной в Quepid 6.4.0.
Quepid не всегда был открытым исходным кодом! Проверьте кредиты для списка участников проекта.
Если вы хотите профинансировать разработку новой функции для Quepid, свяжитесь с нами!