既存のサイトをローカルストレージからS3にアップロードを保存するように移行しています。このガイドに従っています:this guide。新しいアップロードはすべて正常に機能しており、手動で確認したところS3に表示されていることを確認しました。しかし、rake uploads:migrate_to_s3を実行しようとすると、次の出力が表示されます。
Please note that migrating to S3 is currently not reversible!
[CTRL+c] to cancel, [ENTER] to continue
Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Running the migration, this may take a while...
rake aborted!
FileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually.
/var/www/discourse/lib/file_store/to_s3_migration.rb:162:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:127:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(See full trace by running task with --trace)
エラーが発生しているファイル lib/file_store/to_s3_migration.rb を見ると、uploads テーブルに対して url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%' というチェックを実行しているようです。私の場合は、seeded_image_url が uploads/default/original/_X/ に解決されると想定しています。
同じチェックをデータベースに対して手動で実行したところ、以下の結果が得られました。
下の2つは心配していません。これらは移行の単なる一時的なアーティファクトだと推測しています。
url がない場合、サイトはそれらを見つける方法を知らないため、安全に削除できるはずです。しかし、ロゴについてはもっと心配しています。これらはデフォルトのロゴであり、実際にはまだ使用していますが、コードベースにバンドルされており、アップロードされていません。
to_s3_migration.rb の146行目に、URL列が /images/ で始まるアップロードも無視する3番目の条件を追加しても安全でしょうか?それとも、これらのファイルは現在アップロードとは別に扱われており、古いバージョンのDiscourseのアーティファクトにすぎないため、それらの行を削除すべきでしょうか?それとも、タスクが何をしているのか(Railsにあまり詳しくない)を誤解しており、問題は何か別のものですか?
