Quepid を使用すると、アプリの検索結果を改善し、チーム全体が理解できる反復可能で信頼性の高いエンジニアリング プロセスを実現できます。次の 3 つの問題を扱います。
私たちのコラボレーションは臭い検索を総合的に進歩させるには、部門を超えた深いコラボレーションが必要です。メールを撮影したり、スプレッドシートで検索要件を追跡したりするだけでは不十分です。
検索のテストは難しい検索の変更は横断的です。ほとんどの変更は問題を引き起こします。テストは困難です。関連性が変更されるたびに何百もの検索を実行することはできません。
反復が遅い先に進むことは不可能に思えます。後ろ向きに滑るのを避けるために、進歩は遅くなります。多くの人は検索を単純に諦め、ユーザーが重要な情報を見つける手段を奪っています。
詳細については、Quepid の Web サイトと Quepid wiki をご覧ください。
すぐに始める準備ができている場合は、今すぐ 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
次に、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
フォアマンの下でアプリを実行している間は、リクエスト ログのみが表示されます。より詳細なログを記録するには、次のコマンドを実行します。
tail -f log/development.log
実行できるテストには次の 3 種類があります。
これらのテストは、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
で set config.log_level = :debug
テスト中に生成されたログを表示し、次のようにログ ファイルを末尾に追加します。
tail -f log/test.log
JS 構文を確認するには:
bin/docker r rails test:jshint
Angular 側のテストを実行します。カルマ テストには 2 つのモードがあります。
bin/docker r rails karma:run
bin/docker r bin/rake karma:start
注: Karma テストではアセットをプリコンパイルする必要があるため、テストの実行にかなりの時間がかかります。 test/spec ファイルに変更を加えるだけの場合は、ウォッチ モード ( 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
私たちが好まないルールと呼ばれる新しい「コップ」がある場合は、それを./rubocop.yml
ファイルに追加できます。
すべてのテストを一度に実行したい場合 (たとえば、コミットしてプッシュする前に)、次の 2 つのコマンドを実行するだけです。
bin/docker r rails test
bin/docker r rails test:frontend
両方を 1 つのコマンドで実行できるはずですが、何らかの理由で両方を実行できません。 。
テスト用にユーザーに対して大量のクエリを作成したい場合は、次を実行します。
bin/docker r bin/rake db:seed:large_cases
テストには[email protected]
と[email protected]
2 人のユーザーが必要になります。
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 をデバッグできます。
JavaScript ファイルは、rails アセット パイプラインを使用して 1 つのファイルに連結されます。
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 の依存関係をロードするために使用されることに注意してください。ブートストラップをデバッグしている場合は、個別のファイルが必要になります。したがって、 //= 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
という 2 つのスクリプト実行方法があります。
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
gem は次の方法で削除できます。
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
アプリをデーモン (-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 は、ポート 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
が表示されるので、それを確認し、 Gemfile
Git に取り込みます。
コアの対話型アプリケーションには Angular 1 を使用し、その一部としてすべての UI コンポーネントにangular-ui-bootstrap
パッケージを使用します。このパッケージは Bootstrap バージョン 3 に関連付けられています。
Bootstrap 3 CSS をファイルbootstrap3.css
経由で直接インポートします。
Quepid の残りの部分には Bootstrap 5 を使用します。これは、NPM を使用してpackage.json
経由でインクルードされます。 //= require bootstrap/dist/js/bootstrap.bundle
の行については、 admin.js
参照してください。
現在、Rails Sprockets を使用してすべてをコンパイルしていますが、Propshaft に移行し、おそらく js バンドルに移行するという夢を抱いています。
すべてのフォントフェイスは FontSquirrel からのもので、.ttf は .woff2 形式に変換されます。
./bin/setup_jupyterlite
を実行して、アーカイブ ファイル./jupyterlite/notebooks.gz
を更新します。これにより、 ./public/notebooks
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
type は次のいずれかです。
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 の新機能の開発に資金を提供したい場合は、ぜひご連絡ください。