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
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
以上です。
この記事が気に入ったらサポートをしてみませんか?