我刚刚尝试修改一个旧帖子的标题。随后我意识到,帖子中的所有图片都变成了 transparent.png,导致无法正常显示。
执行 rake uploads:recover 后接着执行 rake posts:rebake 未能解决问题。
我可以通过 https://talk.zabanshenas.com/uploads/default/original/3X/8/7/8726fbef7b69ac8226d28568b46f3e06afe2fb4f.jpeg 访问该图片。
上传本身的格式是:
但是当我执行以下操作时:
Upload.where( "url LIKE '%8726fbef7b69ac8226d28568b46f3e06afe2fb4f%'" )
我得到
=> []
有什么想法吗?
如果我在其他地方重新上传完全相同的图片,旧帖子在重新生成后也会显示该图片。因此,我认为问题出在对部分旧上传文件的索引上。我该如何对所有上传文件重新索引?或者更好的是,仅对缺失的文件进行索引。
更新:
我阅读了一些 rake 任务,发现 rake posts:recover_uploads_from_index 似乎可以解决我的问题。但我遇到了以下错误:
undefined method `split' for nil:NilClass
from /var/www/discourse/app/models/site_setting.rb:151:in `s3_base_url'
我的网站并未启用 S3 上传功能:
![]()
更新:
我为上述错误做了一个临时的粗糙修复(注释掉这一行)并运行了 rake 任务。但这并非我所预期的:
正在索引中搜索 upload://dC9HyffX3S1XbwwdUOsHe5aMyJX.jpeg (dC9HyffX3S1XbwwdUOsHe5aMyJX) \n正在跳过 https://talk.zabanshenas.com/t/topic/4430/1 中的 upload://dC9HyffX3S1XbwwdUOsHe5aMyJX.jpeg,因为其文件名似乎过短 \n正在索引中搜索 upload://kWx14u8XkQ8qd6NvOoDLN6usTl8.jpeg (kWx14u8XkQ8qd6NvOoDLN6usTl8) \n正在跳过 https://talk.zabanshenas.com/t/topic/4430/1 中的 upload://kWx14u8XkQ8qd6NvOoDLN6usTl8.jpeg,因为其文件名似乎过短
我深入研究了 rake uploads:recover 这个 rake 任务。我认为下面这一行可能有问题:
据我理解,这里应该将 uploads/default/original 下的所有文件都添加到 @paths 中。然而,我尝试将 @paths 输出到文件中,结果只列出了 tombstone 文件。
我是不是漏掉了什么?
@cvx
我觉得应该改成这样:
concat(Dir.glob(File.join(
Rails.root, "public", Discourse.store.upload_path,
'original',
'**',
'*.*'
)))
