homura Docs App | Posts About Login
Ctrl+K

既存 Sinatra → Cloudflare Workers 移行

homura 本体(app/app.rb + app/routes/canonical_all.rb)が実際に踏んでいるパターンに基づきます。誇張せず、このスタックで動作確認済みの範囲だけを書きます。

対象と非対象

向いているもの

厳しいもの(早期に見送り判断)

6 ステップ(推奨順)

  1. Gemfile: opal-homurarequire: 'opal')、homura-runtimesinatra-homura を追加。D1 を使うなら sequel-d1 も追加します。
  2. エントリ: app.rb(またはメイン定義ファイル)の先頭付近に # await: マジックコメントを付与(JWT / D1 / fetch など非同期が混ざるファイルは必須。Phase 15-C 教訓)。続けて require 'sinatra/cloudflare_workers'
  3. ルート: 既存の get / post を可能な限りそのまま移植。Sinatra の DSL は互換パッチ側で吸収。
  4. DB: Sequel.connect(adapter: :d1, d1: env['cloudflare.env'].DB) の形へ。マイグレーションは bundle exec cloudflare-workers-migrate compile db/migrationsapplysequel-d1 README 参照)。
  5. ビュー: bundle exec cloudflare-workers-erb-compile --input views --output build/templates.rb --namespace …(プロジェクトの Rake / npm に合わせる)。
  6. Workers 向けビルド: bundle exec cloudflare-workers-build(または --standalone)で build/worker.entrypoint.mjs を生成し、wrangler.tomlmain と一致させて wrangler deploy

よくあるハマりポイント

動かない・優先度を下げる例