Quepid hace que mejorar los resultados de búsqueda de su aplicación sea un proceso de ingeniería confiable y repetible que todo el equipo pueda comprender. Se trata de tres cuestiones:
Nuestra colaboración apesta. Lograr un progreso integral en la búsqueda requiere una colaboración profunda y multifuncional. Enviar correos electrónicos o realizar un seguimiento de los requisitos de búsqueda en hojas de cálculo no es suficiente.
Las pruebas de búsqueda son difíciles Los cambios en la búsqueda son transversales: la mayoría de los cambios causarán problemas. Las pruebas son difíciles: no se pueden ejecutar cientos de búsquedas después de cada cambio de relevancia.
Las iteraciones son lentas . Avanzar parece imposible. Para evitar retroceder, el progreso es lento. Muchos simplemente abandonan la búsqueda, privando a los usuarios de los medios para encontrar información crítica.
Para obtener más información, consulte el sitio web de Quepid y la wiki de Quepid.
Si está listo para sumergirse, puede usar el servicio Hosted Quepid ahora mismo o seguir los pasos de instalación para configurar su propia instancia de Quepid.
A continuación encontrará información relacionada con el desarrollo del proyecto de código abierto Quepid, principalmente para personas interesadas en ampliar lo que Quepid puede hacer.
El aprovisionamiento desde una máquina ya construida tarda aproximadamente entre 3 y 4 minutos. El aprovisionamiento desde cero tarda aproximadamente 20 minutos.
Asegúrese de haber instalado Docker. Vaya aquí https://www.docker.com/community-edition#/download para obtener instrucciones de instalación. Y se inicia la aplicación Docker.
Para instalar usando Brew, siga estos pasos:
brew cask install docker
brew cask install docker-toolbox
NOTA: es posible que reciba una advertencia acerca de confiar en Oracle en el primer intento. Abra Preferencias del Sistema > Seguridad y Privacidad, haga clic en el botón Permitir Oracle y luego intente nuevamente instalar Docker-Toolbox.
Ejecute el script de configuración local basado en Ruby para configurar sus imágenes de Docker:
bin/setup_docker
Si desea crear algunos casos que tengan cientos y miles de consultas, haga lo siguiente:
bin/docker r bundle exec thor sample_data:large_data
¡Esto es útil para realizar pruebas de estrés en Quepid! ¡Especialmente la aplicación frontal!
Por último, para ejecutar los cuadernos de Jupyter, debe ejecutar:
bin/setup_jupyterlite
Ahora inicie Quepid localmente en http://localhost:
bin/docker server
El servidor puede tardar hasta un minuto en responder, ya que compila todos los activos del front-end en la primera llamada.
Hemos creado un script auxiliar para ejecutar y administrar la aplicación a través de la ventana acoplable que incluye el comando docker-compose
. Necesitará Ruby instalado. Aún puedes usar docker compose
directamente, pero para las cosas básicas puedes usar lo siguiente:
bin/docker server
o bin/docker s
bin/docker bash
o bin/docker ba
bin/docker console
o bin/docker c
bin/docker run [COMMAND]
o bin/docker r [COMMAND]
bin/docker daemon
o bin/docker q
bin/docker destroy
o bin/docker d
bin/docker r rails test:frontend
bin/docker r rails test
Mientras ejecuta la aplicación bajo Foreman, solo verá un registro de solicitudes; para un registro más detallado, ejecute lo siguiente:
tail -f log/development.log
Hay tres tipos de pruebas que puede ejecutar:
Estas pruebas ejecutan las pruebas desde el lado de Rails (principalmente controladores y modelos API):
bin/docker r rails test
Ejecute un único archivo de prueba mediante:
bin/docker r rails test test/models/user_test.rb
¡O incluso una única prueba en un archivo de prueba pasando el número de línea!
bin/docker r rails test test/models/user_test.rb:33
Si necesita restablecer la configuración de su base de datos de prueba, ejecute:
bin/docker r bin/rake db:drop RAILS_ENV=test
bin/docker r bin/rake db:create RAILS_ENV=test
Vea los registros generados durante la prueba set config.log_level = :debug
en test.rb
y luego siga el archivo de registro a través de:
tail -f log/test.log
Para comprobar la sintaxis JS:
bin/docker r rails test:jshint
Ejecuta pruebas para el lado angular. Hay dos modos para las pruebas de karma:
bin/docker r rails karma:run
bin/docker r bin/rake karma:start
Nota: Las pruebas de karma requieren que los activos estén precompilados, lo que agrega una cantidad significativa de tiempo a la ejecución de la prueba. Si solo está realizando cambios en los archivos de prueba/especificaciones, se recomienda ejecutar las pruebas en modo de vigilancia ( bin/docker r bin/rake karma:start
). La advertencia es que cada vez que realice un cambio en los archivos de la aplicación, deberá reiniciar el proceso (o usar el modo de ejecución única).
Para comprobar la sintaxis de Ruby:
bin/docker r bundle exec rubocop
Rubocop a menudo puede autocorregir muchos de los problemas de pelusa que encuentra mediante --autocorrect-all
:
bin/docker r bundle exec rubocop --autocorrect-all
Si hay un nuevo "Cop", como llaman a sus reglas, que no nos gusta, puede agregarlo al archivo ./rubocop.yml
.
Si desea ejecutar todas las pruebas de una sola vez (antes de confirmar y presionar, por ejemplo), simplemente ejecute estos dos comandos:
bin/docker r rails test
bin/docker r rails test:frontend
Por alguna razón no podemos ejecutar ambos con un solo comando, ¡aunque deberíamos poder hacerlo! .
Si desea crear MUCHAS consultas para que un usuario las pruebe, ejecute
bin/docker r bin/rake db:seed:large_cases
Tendrá dos usuarios, [email protected]
y [email protected]
para realizar la prueba.
Si desea probar los cuadernos Jupyterlite o trabajar con un estuche y un libro "reales", ejecute
bin/docker r bundle exec thor sample_data:haystack_party
Tendrá muchos datos de usuario del libro de calificación de Haystack y del caso con los que trabajar. Estos datos provienen del caso público https://app.quepid.com/case/6789/try/12?sort=default y https://app.quepid.com/books/25
La depuración de Ruby generalmente depende de la situación, la forma más sencilla es imprimir el objeto en 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)
En la aplicación Rails puedes usar el registrador para la salida:
Rails . logger object . inspect
Si eso no es suficiente y desea ejecutar un depurador, se incluye la gema debug
para ello. Consulte https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem.
Además, tenemos disponible la gema derailed
que le ayuda a comprender los problemas de memoria.
bin/docker r bundle exec derailed bundle:mem
Mientras ejecuta la aplicación, puede depurar JavaScript utilizando su herramienta favorita, como siempre lo ha hecho.
Los archivos javascript se concatenarán en un solo archivo, utilizando la canalización de activos de Rails.
Puede desactivarlo activando el siguiente indicador en config/environments/development.rb
:
# config.assets.debug = true
config . assets . debug = false
a
config . assets . debug = true
# config.assets.debug = false
Debido a que hay demasiados archivos Angular JS en esta aplicación, y en el modo debug
Rails intentará cargar cada archivo por separado, eso ralentiza la aplicación y se vuelve realmente molesto en el modo de desarrollo esperar a que se carguen los scripts. Por eso está desactivado de forma predeterminada.
PD: No olvide reiniciar el servidor cuando cambie la configuración.
También tenga en cuenta que los archivos secure.js
, application.js
y admin.js
se utilizan para cargar todas las dependencias de JavaScript y CSS a través del canal Rails Asset. Si está depurando Bootstrap, necesitará archivos individuales. Entonces reemplace //= require sprockets
con //= require bootstrap-sprockets
.
docker-compose.override.yml.example
se puede copiar a docker-compose.override.yml
y usarlo para anular variables de entorno o trabajar con una copia local de la biblioteca JS splainer-search durante el desarrollo definido en docker-compose.yml
. Se incluye ejemplo. ¡Simplemente actualice la ruta a splainer-search
con su pago local! https://docs.docker.com/compose/extends/
Esta aplicación tiene dos formas de ejecutar scripts: rake
y thor
.
Rake es ideal para tareas simples que dependen del entorno de la aplicación y tareas predeterminadas que vienen de forma predeterminada con Rails.
Mientras que Thor es una herramienta más poderosa para escribir guiones que aceptan argumentos mucho mejor que Rake.
Para ver qué tareas de rake están disponibles, ejecute:
bin/docker r bin/rake -T
Nota : el uso de bin/rake
garantiza que la versión de rake
que se está ejecutando sea la que está bloqueada en Gemfile.lock
de la aplicación (para evitar conflictos con otras versiones que puedan estar instaladas en su sistema). Esto es equivalente al bundle exec rake
.
Tareas comunes de rake que podrías utilizar:
# 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
Ver tareas disponibles:
bin/docker r bundle exec thor list
La documentación adicional se encuentra en Documentación operativa.
Deberá configurar Elasticsearch para aceptar solicitudes del navegador mediante CORS. Para habilitar CORS, agregue lo siguiente al archivo de configuración de elasticsearch. Normalmente, este archivo se encuentra cerca del ejecutable de elasticsearch en config/elasticsearch.yml
.
http.cors :
enabled : true
allow-origin : /https?://localhost(:[0-9]+)?/
Vea más detalles en la wiki en https://github.com/o19s/quepid/wiki/Troubleshooting-Elasticsearch-and-Quepid
Normalmente simplemente harías:
bin/docker r yarn add foobar
o
bin/docker r yarn upgrade foobar
que instalará/actualizará el módulo Node y luego guardará esa dependencia en package.json
.
Luego verifique los archivos actualizados package.json
y yarn.lock
.
¡Utilice bin/docker r yarn outdated
para ver qué paquetes puede actualizar!
Normalmente simplemente harías:
bin/docker r bundle add foobar
que instalará la nueva Gem y luego guardará esa dependencia en Gemfile
.
También puedes actualizar una gema que no tiene una versión específica en Gemfile
a través de:
bin/docker r bundle update foobar
Puedes eliminar una gema a través de:
bin/docker r bundle remove foobar
Luego verifique los archivos Gemfile
y Gemfile.lock
actualizados. Por si acaso, ejecute bin/setup_docker
.
Para saber si tiene gemas desactualizadas, ejecute:
bin/docker r bundle outdated --groups
Descomente en docker-compose.yml
la configuración - RAILS_RELATIVE_URL_ROOT=/quepid-app
y luego abra http://localhost:3000/quepid-app.
Esos pasos deberían permitirle poner en marcha localmente una versión de producción (frente a la versión de desarrollador) de Quepid.
docker build -t o19s/quepid -f Dockerfile.prod .
Esto podría generar un error en la primera ejecución. Inténtalo de nuevo si eso sucede
docker tag o19s/quepid o19s/quepid:$QUEPID_VERSION
docker compose up -d mysql
docker compose run --rm app bin/rake db:setup
Actualice su archivo docker-compose.prod.yml para usar su imagen actualizando la versión de la imagen en la image: o19s/quepid:10.0.0
Inicie la aplicación como Daemon (-d) o como contenedor activo
docker compose up [-d]
Hay un directorio .ssl
que contiene los archivos de claves y certificados utilizados para SSL. ¡Este es un certificado generado autofirmado para uso SOLAMENTE en desarrollo!
La clave/certificado se generó usando el siguiente comando:
openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout .ssl/localhost.key -out .ssl/localhost.crt
PD: No es necesario volver a hacer eso.
El archivo docker-compose.yml
contiene un proxy inverso nginx que utiliza estos certificados. Puede acceder a Quepid en https://localhost o http://localhost. (Quepid seguirá estando disponible a través de http en el puerto 80).
¡Agregue documentos de desarrollo aquí!
La implementación del desarrollador de las credenciales de la consola de administración de Keycloak es admin
y password
.
A continuación se muestra un ejemplo de cómo generar una migración:
bin/docker r bundle exec bin/rails g migration FixCuratorVariablesTriesForeignKeyName
Seguido por bin/docker r bundle exec rake db:migrate
También debe actualizar los datos de anotación del esquema ejecutando bin/docker r bundle exec annotations
cuando cambie el esquema.
Modifique el archivo Gemfile
y luego ejecute:
bin/docker r bundle install
Verá un Gemfile.lock
actualizado, continúe y verifíquelo y Gemfile
en Git.
Usamos Angular 1 para la aplicación interactiva principal y, como parte de eso, usamos el paquete angular-ui-bootstrap
para todos nuestros componentes de UI. Este paquete está vinculado a la versión 3 de Bootstrap.
Importamos el CSS Bootstrap 3 directamente a través del archivo bootstrap3.css
.
¡Para el resto de Quepid, usamos Bootstrap 5! Esto se incluye a través de package.json
usando NPM. Consulte admin.js
para ver la línea //= require bootstrap/dist/js/bootstrap.bundle
.
Actualmente usamos Rails Sprockets para compilar todo, pero soñamos con pasar a Propshaft y tal vez js-bundling.
La fuente completa es de FontSquirrel y el .ttf se convierte al formato .woff2.
Ejecute ./bin/setup_jupyterlite
para actualizar el archivo ./jupyterlite/notebooks.gz
. Esto también configura los archivos estáticos en el directorio ./public/notebooks
. Sin embargo, para no registrar cientos de archivos, ignoramos ese directorio de Github. En el momento asset:precompile
descomprimimos el archivo ./jupyterlite/notebooks.gz
. Esto funciona en Heroku y la imagen de producción de Docker.
Para actualizar la versión de Jupyterlite, edite Dockerfile.dev
y Dockerfile.prod
y actualice la versión pip install
.
¿Pregunta? ¿Jupyterlite funciona en localhost?
Vea esta excelente publicación de blog: https://keygen.sh/blog/how-to-implement-api-key-authentication-in-rails- without-devise/.
Hay una canalización de implementación de código en el sitio http://quepid-staging.herokuapp.com que se ejecuta en confirmaciones exitosas con main
.
Si tiene migraciones pendientes, deberá ejecutarlas a través de:
heroku run bin/rake db:migrate -a quepid-staging
heroku restart -a quepid-staging
Las siguientes cuentas se crean mediante el proceso bin/setup_docker
. Todos siguen el siguiente formato:
email: quepid+[type]@o19s.com
password: password
donde tipo es uno de los siguientes:
admin
: una cuenta de administradorrealisticActivity
: un usuario con varios casos que demuestran Quepid, incluido el caso de demostración y el libro de Haystack Rating Party, y es miembro del equipo 'OSC'.100sOfQueries
: un usuario con un caso Solr que tiene cientos de consultas (generalmente deshabilitadas)1000sOfQueries
: un usuario con un caso Solr que tiene miles de consultas (generalmente deshabilitadas)oscOwner
: Un usuario propietario del equipo 'OSC'oscMember
: un usuario que es miembro del equipo 'OSC'Consulte el archivo de asignación de datos para obtener más información sobre la estructura de datos de la aplicación.
Reconstruya el ERD mediante bin/docker r bundle exec rake erd:image
Consulte el archivo de estructura de la aplicación para obtener más información sobre cómo está estructurado Quepid.
Consulte el archivo de documentación operativa para obtener más información sobre cómo se puede operar y configurar Quepid para su empresa.
Quepid no sería posible sin las contribuciones de muchas personas y organizaciones.
Específicamente, nos gustaría agradecer a Erik Bugge y a la gente de Kobler por financiar la función Only Rated lanzada en Quepid 6.4.0.
¡Quepid no siempre fue de código abierto! Consulte los créditos para obtener una lista de contribuyentes al proyecto.
Si desea financiar el desarrollo de una nueva función para Quepid, ¡póngase en contacto!