🐰
【環境構築編】Rails API × Meilisearch SDK をつかってみる
Rails
API から Meilisearch
API を呼び出したいので、Docker
環境の構築を行いました。
Rails
と Meilisearch
の開発環境を Docker
で構築します。
構築の部分は下記の2記事でほとんど補完することができて、異なるのは compose.yml
くらいです。なのでこの記事ではほとんど手順をまとめているだけです。
オプションやコマンドの説明については、下記記事もしくは、下記記事の参考文献がより詳しいです。
サンプルリポジトリ
続編
ディレクトリ構造
各ファイルは以下のように設置されています。
Meilisearch
用のサンプルデータ(sample.json
)だけはわかりやすいように meili
直下においていますがどこでも大丈夫です。
.
├─ compose.yml
├─ meili
│ └─ sample.json
└─ rails
├─ Gemfile
├─ Gemfile.lock
└─ entrypoint.sh
環境設定
compose.yml
version: '3'
services:
db:
container_name: postgres
image: postgres:16.0
ports:
- "5432:5432"
volumes:
- pg-data:/var/lib/postgresql/data
environment:
- POSTGRES_DATABASE=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_ROOT_PASSWORD=root
meilisearch:
image: getmeili/meilisearch:v1.5
ports:
- "7700:7700"
environment:
- MEILI_MASTER_KEY=meili-master-key
volumes:
- ./meili_data:/meili_data
rails:
build:
context: ./rails
command: bash -c "rails s -b '0.0.0.0'"
volumes:
- ./rails:/usr/src/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
volumes:
pg-data:
bin:
driver: local
構築手順
冒頭にも書いた通り、手順のみ書いておきます。
rails 環境構築
# rails new
docker compose run --rm rails rails new . --force --database=postgresql --api --skip-bundle
ここでいったん、database.yml, Gemfile を書き換える。
config/databse.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: postgres
password: password
host: db
port: 5432
development:
<<: *default
database: postgres_dev
password: password
test:
<<: *default
database: postgres_test
password: password
Gemfile
source "https://rubygems.org"
git_source(:github) {|repo| "https://github.com/#{repo}.git" }
ruby "3.3.0"
gem "bootsnap", require: false
gem "pg", "~> 1.1"
gem "puma", "~> 6.4.0"
gem "rails", "~> 7.1.2"
gem "tzinfo-data", platforms: %i[mingw mswin x64_mingw jruby]
# bundle install
docker compose run --rm rails bundle install
# コンテナ立ち上げ
docker compose build --no-cache
docker compose up -d
# DB 作成
docker compose exec api /bin/bash
rails db:create
# 疎通確認
# localhost:3000 にアクセス
meilisearch 環境構築
# 疎通確認
# rails 環境構築の際、docker up -d しているなら、meilisearch も立ち上がっている
# localhost:7700 にアクセス
# 必要に応じて APIkey をセットしておく
# インデックス作成、sample.json があるディレクトリに移動しておく
curl \
-X POST 'http://localhost:7700/indexes/{インデックス名}/documents?primaryKey={任意のキー}' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer meili-master-key' \
--data-binary @sample.json
# 作成状況の確認
curl \
-X GET 'http://localhost:7700/tasks/0' \
-H 'Authorization: Bearer meili-master-key'
# localhost:7700 にアクセス/画面更新
# インデックスが追加されていること、検索ができることを確認する
さいごに
結構あっさりめですが、今回は以上です。
当初は環境構築+SDK 利用の記事にしようと考えていましたが、思ったよりも長くなってしまいそうだったので、一度区切りをつけます。
続きかきました
Discussion