Hotwire: Rails: Render: バックグラウンドで処理したファイルをダウンロードする時のUI

Hotwire: Rails: バックグラウンドで処理したファイルをダウンロードする時のUI- Broadcastable concern 版|usutani|note を最小限の手直しでRenderにデプロイする。

 アプリの画面

ローカル環境で動作確認

ruby 3.0.2p107
rails 7.0.0.alpha2
macOS 12.3.1
foreman 0.87.2 (gem install foreman)
Redis server 6.2.5 (brew install redis)

git clone https://github.com/usutani/ui_background_process_2.git

使用していたturbo-railsのバージョン7.1.1が公開停止(yanked状態)になっているため最新の安定版に更新する。

Gemfile
gem "turbo-rails", ">= 1.0.1"

bundle update --conservative turbo-rails

Renderのプラットフォームを追加する。

bundle lock --add-platform x86_64-linux

DBをPostgreSQLに変更する。

bin/rails db:system:change --to=postgresql
bundle install
bin/rails db:create
bin/rails db:migrate
bin/dev

open http://localhost:3000

bin/rails db:drop
rm -r storage
git checkout storage

ローカル環境で動作確認できた。

Renderにデプロイ

Getting Started with Ruby on Rails on Render / Update Your App For Render

手順に従い下記のファイルを追加編集する。

  • config/database.yml

  • config/puma.rb

  • config/environments/production.rb

  • bin/render-build.sh

Active Storage
変更なし。一時的に試すだけなのでファイルは消えても構わない。
ファイルの保存先はローカルのままで使用する。
実運用ではAmazon S3の使用を想定している。

config/environments/production.rb
config.active_storage.service = :local

Active Job
変更なし。キューイングバックエンドはデフォルト(:inline)のまま。
実運用ではSidekiqの使用を想定している。
またバックグラウンドワーカーはRenderのフリープランの対象外。

config/environments/production.rb
# config.active_job.queue_adapter     = :resque

Action Cable (Hotwire)
変更なし。設定はデフォルトのまま。
procution環境では環境変数 REDIS_URL を使用する。

config/cable.yml
production:
  adapter: redis
  url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
  channel_prefix: ui_background_process_2_production

使用するRenderのサービス

下記のサービスを使用する。

  • Web Service

  • Redis

  • PostgreSQL

Dashboard

Redis
Action Cable (Hotwire) で Render の Redis を使用する。
内部接続文字列を後述の Web Service の環境変数 REDIS_URL で使用する。

PostgreSQL
RenderのPostgreSQLを使用する。
内部接続文字列を後述の Web Service の環境変数 DATABASE_URL で使用する。

Web Service
Railsのマスターキーを RAILS_MASTER_KEY に設定する。

cat config/master.key | pbcopy

以上です。

この記事が気に入ったらサポートをしてみませんか?