マージ後、ファイルとUpload modelが存在しても画像が表示されない

Merge two Discourse sites into one を使用しましたが、ほとんどうまくいきましたが、2番目のサイトからの画像が表示されません。

次のようなことができます。

p=Post.find_by(topic_id: 222435, post_number: 11)
short_url=p.raw.match(/(upload:\/\/.*?)\)/)[1]
up=Upload.sha1_from_short_url(short_url)

そして up.url/uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg のようになり、cd /shared; ls uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg はファイルを見つけます。

しかし、https://host/uploads/default/original/3X/9/e/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg は nginx から 404 を返します。

Upload が存在し、ファイルが存在する場合、NGINX は親切にそれを提供してくれるはずです。何が足りないのでしょうか?

画像によっては、テストサイトの画像の URL を貼り付けることでこの問題を「解決」しました。これにより画像が生成され、アップロードに変換されます(私が探しているのと同じアップロードのように見えます)。その後、投稿を再構築すると、画像が表示されるようになります。

リモート画像の URL を貼り付けるのと同じことをするために、次のようなことを試しました。

f=File.open('/shared/uploads/default/original/2X/9/9ebb54f0e825c05df7f6df271a5cfbdc95a6332c.jpeg')
upload = UploadCreator.new(f, 'upload.jpeg').create_for(-1)

しかし、これも機能していません。

RGJさん、こんにちは。再ベイク時に、データベースやファイルシステムに(存在するように見える)これらの画像を表示させる方法について、何かヒントはありますか?

このようなエラーのデバッグは嫌いです
ほとんどの場合、Railsコンソールでコントローラー内のコードを手動で実行するだけです。

今回は、404が111行目から来ているのではないかと思います。

Discourse.store.list_missing_uploads(skip_optimized: true) は何を返しますか?

「いいね!」 1

私も同じです。でも、私よりあなたはきっと得意だと思います。ヒントをありがとうございます。

それをやろうとしています。

それは良い推測のようです。ありがとうございます!

nil です。skip_optimized: false でも同じです。

投稿のアップロードを1つ修正できましたが、あまり良いメモを残せなかったようです。:person_shrugging: でも、そこにたどり着くために多くのことをしました。少なくとも、可能であるという希望は持っています。

「いいね!」 1