O Quepid torna a melhoria dos resultados de pesquisa do seu aplicativo um processo de engenharia confiável e repetível que toda a equipe pode entender. Ele trata de três questões:
Nossa colaboração é péssima Fazer progresso holístico na pesquisa exige colaboração profunda e multifuncional. Enviar e-mails ou rastrear requisitos de pesquisa em planilhas não é suficiente.
O teste de pesquisa é difícil. As alterações de pesquisa são transversais: a maioria das alterações causará problemas. Testar é difícil: você não pode realizar centenas de pesquisas após cada mudança de relevância.
As iterações são lentas. Avançar parece impossível. Para evitar retroceder, o progresso é lento. Muitos simplesmente desistem da pesquisa, privando os utilizadores dos meios para encontrar informações críticas.
Para saber mais, confira o site do Quepid e o wiki do Quepid.
Se você estiver pronto para começar, você pode usar o serviço Hosted Quepid agora mesmo ou seguir as etapas de instalação para configurar sua própria instância do Quepid.
Abaixo estão informações relacionadas ao desenvolvimento do projeto de código aberto Quepid, principalmente para pessoas interessadas em ampliar o que o Quepid pode fazer!
O provisionamento de uma máquina já construída leva aproximadamente de 3 a 4 minutos. O provisionamento do zero leva aproximadamente 20 minutos.
Certifique-se de ter instalado o Docker. Acesse aqui https://www.docker.com/community-edition#/download para obter instruções de instalação. E o aplicativo Docker é iniciado.
Para instalar usando brew siga estes passos:
brew cask install docker
brew cask install docker-toolbox
NOTA: você pode receber um aviso sobre confiar no Oracle na primeira tentativa. Abra Preferências do Sistema > Segurança e Privacidade, clique no botão Permitir Oracle e tente instalar novamente o docker-toolbox
Execute o script de configuração local baseado em Ruby para configurar suas imagens Docker:
bin/setup_docker
Se você deseja criar alguns casos com centenas e milhares de consultas, faça:
bin/docker r bundle exec thor sample_data:large_data
Isto é útil para testes de estresse do Quepid! Principalmente o aplicativo front-end!
Por último, para executar os notebooks Jupyter, você precisa executar:
bin/setup_jupyterlite
Agora inicie o Quepid localmente em http://localhost:
bin/docker server
Pode levar até um minuto para o servidor responder enquanto compila todos os ativos de front-end na primeira chamada.
Criamos um script auxiliar para executar e gerenciar o aplicativo por meio do docker que envolve o comando docker-compose
. Você precisará do Ruby instalado. Você ainda pode usar docker compose
diretamente, mas para o básico você pode usar o seguinte:
bin/docker server
ou bin/docker s
bin/docker bash
ou bin/docker ba
bin/docker console
ou bin/docker c
bin/docker run [COMMAND]
ou bin/docker r [COMMAND]
bin/docker daemon
ou bin/docker q
bin/docker destroy
ou bin/docker d
bin/docker r rails test:frontend
bin/docker r rails test
Ao executar o aplicativo no Foreman, você verá apenas um log de solicitação. Para um registro mais detalhado, execute o seguinte:
tail -f log/development.log
Existem três tipos de testes que você pode executar:
Esses testes executam os testes do lado Rails (principalmente controladores de API e modelos):
bin/docker r rails test
Execute um único arquivo de teste por meio de:
bin/docker r rails test test/models/user_test.rb
Ou até mesmo um único teste em um arquivo de teste passando o número da linha!
bin/docker r rails test test/models/user_test.rb:33
Se você precisar redefinir a configuração do banco de dados de teste, execute:
bin/docker r bin/rake db:drop RAILS_ENV=test
bin/docker r bin/rake db:create RAILS_ENV=test
Visualize os logs gerados durante o teste definido config.log_level = :debug
em test.rb
e, em seguida, siga o arquivo de log por meio de:
tail -f log/test.log
Para verificar a sintaxe JS:
bin/docker r rails test:jshint
Executa testes para o lado Angular. Existem dois modos para os testes de carma:
bin/docker r rails karma:run
bin/docker r bin/rake karma:start
Nota: Os testes de carma exigem que os ativos sejam pré-compilados, o que adiciona uma quantidade significativa de tempo à execução do teste. Se você estiver apenas fazendo alterações nos arquivos de teste/especificação, é recomendável executar os testes no modo de observação ( bin/docker r bin/rake karma:start
). A ressalva é que sempre que você fizer uma alteração nos arquivos do aplicativo, será necessário reiniciar o processo (ou usar o modo de execução única).
Para verificar a sintaxe do Ruby:
bin/docker r bundle exec rubocop
Muitas vezes, o Rubocop pode corrigir automaticamente muitos dos problemas de lint encontrados por meio de --autocorrect-all
:
bin/docker r bundle exec rubocop --autocorrect-all
Se houver um novo "Policial", como eles chamam suas regras, que não gostamos, você pode adicioná-lo ao arquivo ./rubocop.yml
.
Se você quiser executar todos os testes de uma só vez (antes de confirmar e enviar por push, por exemplo), basta executar estes dois comandos:
bin/docker r rails test
bin/docker r rails test:frontend
Por alguma razão, não podemos executar ambos com um comando, embora devêssemos poder! .
Se você deseja criar MUITAS consultas para um usuário testar, execute
bin/docker r bin/rake db:seed:large_cases
Você terá dois usuários, [email protected]
e [email protected]
para testar.
Se você quiser testar os notebooks Jupyterlite ou trabalhar com um case e um livro "reais", execute
bin/docker r bundle exec thor sample_data:haystack_party
Você terá muitos dados do usuário do livro e caso de classificação do Haystack para trabalhar. Esses dados são provenientes do caso público https://app.quepid.com/case/6789/try/12?sort=default e https://app.quepid.com/books/25
A depuração do Ruby geralmente depende da situação, a maneira mais simples é imprimir o objeto no 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)
Na aplicação Rails você pode usar o logger para a saída:
Rails . logger object . inspect
Se isso não for suficiente e você quiser executar um depurador, a gem debug
está incluída para isso. Consulte https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem.
Além disso, temos disponível a joia derailed
, que ajuda você a entender os problemas de memória.
bin/docker r bundle exec derailed bundle:mem
Durante a execução da aplicação, você pode depurar o javascript usando sua ferramenta favorita, do jeito que sempre fez.
Os arquivos javascript serão concatenados em um arquivo, usando o pipeline de ativos rails.
Você pode desativar isso alternando o seguinte sinalizador em config/environments/development.rb
:
# config.assets.debug = true
config . assets . debug = false
para
config . assets . debug = true
# config.assets.debug = false
Como há muitos arquivos Angular JS neste aplicativo, e no modo debug
o Rails tentará carregar cada arquivo separadamente, o que torna o aplicativo mais lento e se torna realmente irritante no modo de desenvolvimento esperar o carregamento dos scripts. É por isso que está desativado por padrão.
PS: Não se esqueça de reiniciar o servidor ao alterar a configuração.
Observe também que os arquivos secure.js
, application.js
e admin.js
são usados para carregar todas as dependências JavaScript e CSS por meio do pipeline Rails Asset. Se você estiver depurando o Bootstrap, precisará de arquivos individuais. Portanto, substitua //= require sprockets
por //= require bootstrap-sprockets
.
docker-compose.override.yml.example
pode ser copiado para docker-compose.override.yml
e usado para substituir variáveis de ambiente ou trabalhar com uma cópia local da biblioteca JS splainer-search durante o desenvolvimento definido em docker-compose.yml
. Exemplo está incluído. Basta atualizar o caminho para splainer-search
com seu checkout local! https://docs.docker.com/compose/extends/
Este aplicativo possui duas formas de executar scripts: rake
e thor
.
Rake é ótimo para tarefas simples que dependem do ambiente da aplicação e tarefas padrão que vêm por padrão com Rails.
Considerando que Thor é uma ferramenta mais poderosa para escrever scripts que aceitam argumentos muito melhor do que Rake.
Para ver quais tarefas de rake estão disponíveis, execute:
bin/docker r bin/rake -T
Nota : o uso de bin/rake
garante que a versão do rake
que está sendo executada seja aquela bloqueada no Gemfile.lock
do aplicativo (para evitar conflitos com outras versões que possam estar instaladas em seu sistema). Isso é equivalente a bundle exec rake
.
Tarefas comuns de rake que você pode usar:
# 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
Veja as tarefas disponíveis:
bin/docker r bundle exec thor list
A documentação adicional está na Documentação Operacional.
Você precisará configurar o Elasticsearch para aceitar solicitações do navegador usando CORS. Para habilitar o CORS, adicione o seguinte ao arquivo de configuração do elasticsearch. Normalmente, esse arquivo está localizado próximo ao executável do elasticsearch em config/elasticsearch.yml
.
http.cors :
enabled : true
allow-origin : /https?://localhost(:[0-9]+)?/
Veja mais detalhes no wiki em https://github.com/o19s/quepid/wiki/Troubleshooting-Elasticsearch-and-Quepid
Normalmente você simplesmente faria:
bin/docker r yarn add foobar
ou
bin/docker r yarn upgrade foobar
que instalará/atualizará o módulo Node e salvará essa dependência em package.json
.
Em seguida, verifique os arquivos package.json
e yarn.lock
atualizados.
Use bin/docker r yarn outdated
para ver quais pacotes você pode atualizar!!!!
Normalmente você simplesmente faria:
bin/docker r bundle add foobar
que instalará o novo Gem e salvará essa dependência em Gemfile
.
Você também pode atualizar uma gem que não possui uma versão específica no Gemfile
via:
bin/docker r bundle update foobar
Você pode remover uma joia através de:
bin/docker r bundle remove foobar
Em seguida, faça check-in dos arquivos Gemfile
e Gemfile.lock
atualizados. Para garantir, execute bin/setup_docker
.
Para entender se você tem joias desatualizadas, execute:
bin/docker r bundle outdated --groups
Remova o comentário em docker-compose.yml
a configuração - RAILS_RELATIVE_URL_ROOT=/quepid-app
e abra http://localhost:3000/quepid-app.
Essas etapas devem permitir que você execute localmente uma compilação de produção (em vez da compilação do desenvolvedor) do Quepid.
docker build -t o19s/quepid -f Dockerfile.prod .
Isso pode causar erro na primeira execução. Tente novamente se isso acontecer
docker tag o19s/quepid o19s/quepid:$QUEPID_VERSION
docker compose up -d mysql
docker compose run --rm app bin/rake db:setup
Atualize seu arquivo docker-compose.prod.yml para usar sua imagem atualizando a versão da imagem na image: o19s/quepid:10.0.0
Inicie o aplicativo como um Daemon (-d) ou como um contêiner ativo
docker compose up [-d]
Há um diretório .ssl
que contém os arquivos de chave e certificado usados para SSL. Este é um certificado gerado autoassinado para uso SOMENTE em desenvolvimento!
A chave/certificado foi gerada usando o seguinte comando:
openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout .ssl/localhost.key -out .ssl/localhost.crt
PS: Não é necessário fazer isso novamente.
O arquivo docker-compose.yml
contém um proxy reverso nginx que usa esses certificados. Você pode acessar o Quepid em https://localhost ou http://localhost. (O Quepid ainda estará disponível via http na porta 80.)
Adicione documentos de desenvolvimento aqui!
A implantação do desenvolvedor das credenciais do Keycloak Admin Console são admin
e password
.
Aqui está um exemplo de geração de uma migração:
bin/docker r bundle exec bin/rails g migration FixCuratorVariablesTriesForeignKeyName
Seguido por bin/docker r bundle exec rake db:migrate
Você também deve atualizar os dados de anotação do esquema executando bin/docker r bundle exec annotations
ao alterar o esquema.
Modifique o arquivo Gemfile
e execute:
bin/docker r bundle install
Você verá um Gemfile.lock
atualizado, vá em frente e verifique-o e Gemfile
no Git.
Usamos Angular 1 para o aplicativo interativo principal e, como parte disso, usamos o pacote angular-ui-bootstrap
para todos os nossos componentes de UI. Este pacote está vinculado ao Bootstrap versão 3.
Importamos o CSS do Bootstrap 3 diretamente através do arquivo bootstrap3.css
.
Para o resto do Quepid, usamos Bootstrap 5! Isso está incluído no package.json
usando NPM. Consulte admin.js
para a linha //= require bootstrap/dist/js/bootstrap.bundle
.
Atualmente usamos Rails Sprockets para compilar tudo, mas sonhamos em migrar para o Propshaft e talvez para o js-bundling.
A fonte aller é do FontSquirrel e o .ttf é convertido para o formato .woff2.
Execute ./bin/setup_jupyterlite
para atualizar o arquivo ./jupyterlite/notebooks.gz
. Isso também configura os arquivos estáticos no diretório ./public/notebooks
. No entanto, para não verificarmos centenas de arquivos, ignoramos esse diretório do Github. No momento asset:precompile
descompactamos o arquivo ./jupyterlite/notebooks.gz
. Isso funciona no Heroku e na imagem de produção do Docker.
Para atualizar a versão do Jupyterlite, edite Dockerfile.dev
e Dockerfile.prod
e atualize a versão pip install
.
Pergunta? O jupyterlite funciona em localhost????
Veja esta ótima postagem no blog: https://keygen.sh/blog/how-to-implement-api-key-authentication-in-rails-without-devise/.
Há um pipeline de implantação de código para o site http://quepid-staging.herokuapp.com que é executado em confirmações bem-sucedidas em main
.
Se você tiver migrações pendentes, precisará executá-las por meio de:
heroku run bin/rake db:migrate -a quepid-staging
heroku restart -a quepid-staging
As contas a seguir são criadas por meio do processo bin/setup_docker
. Todos eles seguem o seguinte formato:
email: quepid+[type]@o19s.com
password: password
onde type é um dos seguintes:
admin
: Uma conta de administradorrealisticActivity
: Um usuário com vários casos que demonstram o Quepid, incluindo o caso de demonstração e livro do Haystack Rating Party e é membro da equipe 'OSC'.100sOfQueries
: um usuário com um caso Solr que possui centenas de consultas (geralmente desabilitadas)1000sOfQueries
: um usuário com um caso Solr que possui milhares de consultas (geralmente desabilitadas)oscOwner
: Um usuário que possui a equipe 'OSC'oscMember
: Um usuário que é membro da equipe 'OSC'Confira o arquivo de mapeamento de dados para obter mais informações sobre a estrutura de dados do aplicativo.
Reconstrua o ERD via bin/docker r bundle exec rake erd:image
Confira o arquivo de estrutura do aplicativo para obter mais informações sobre como o Quepid está estruturado.
Confira o arquivo de Documentação Operacional para mais informações sobre como o Quepid pode ser operado e configurado para sua empresa.
O Quepid não seria possível sem as contribuições de muitos indivíduos e organizações.
Especificamente, gostaríamos de agradecer a Erik Bugge e ao pessoal da Kobler por financiar o recurso Only Rated lançado no Quepid 6.4.0.
O Quepid nem sempre foi de código aberto! Confira os créditos para uma lista de colaboradores do projeto.
Se você deseja financiar o desenvolvimento de um novo recurso para o Quepid, entre em contato!