開発環境でSolid Queue/Cableを使う

前回までのあらすじ

Railsでイベントの通知をモデリングする
通知モデルのユニットテストを実装する
モデル更新のブロードキャストを確認する

開発環境(development environment)でSolid QueueSolid Cableを使えるようにします。これでコンソールの変更が画面(ウェブページ)に反映されるようになります。

 

次の設定ファイルを変更します。

・config/database.yml
・config/cable.yml
・config/environments/development.rb

config/database.yml
データベース設定のdevelopmentを変更してprimary queue cable の3つに分ける。queue と cable はmigrations_pathsでスキーマファイルのパスを設定する。


development:
  primary:
    <<: *default
    database: storage/development.sqlite3
  queue:
    <<: *default
    database: storage/development_queue.sqlite3
    migrations_paths: db/queue_migrate
  cable:
    <<: *default
    database: storage/development_cable.sqlite3
    migrations_paths: db/cable_migrate

config/cable.yml
development を production と同じにする。


default: &default
  adapter: solid_cable
  connects_to:
    database:
      writing: cable
  polling_interval: 0.1.seconds
  message_retention: 1.day

development:
  <<: *default

test:
  adapter: test

production:
  <<: *default

config/environments/development.rb
Solid Queueを設定する。production.rbの内容をコピーする。


  # Replace the default in-process and non-durable queuing backend for Active Job.
  config.active_job.queue_adapter = :solid_queue
  config.solid_queue.connects_to = { database: { writing: :queue } }

データベースの queue と cable を準備する。


bin/rails db:prepare

アプリサーバーを起動する。今回はデフォルトのDockerfileに書かれているproduction環境の起動方法に合わせて環境変数SOLID_QUEUE_IN_PUMAを設定した。


SOLID_QUEUE_IN_PUMA=1 bin/rails server

コンソールに入る。


bin/rails console

通知モデルを更新する。


Notification.first.update! processed: true

画面が更新されることを確認する。

データベースをマイグレートする時はprimaryを指定する。


bin/rails db:migrate:primary

以上です。



▼この記事がいいね!と思ったらブックマークお願いします
このエントリーをはてなブックマークに追加