从Heroku迁移至Render后ActionText嵌入内容404问题求助
检查Active Storage数据与存储配置:原Heroku上的ActionText嵌入内容依赖Active Storage存储的附件,迁移时需确认
active_storage_blobs、active_storage_attachments等表的数据是否完整同步到Render数据库。同时核对config/storage.yml在Render环境下的配置,比如S3的密钥、桶名等环境变量是否和Heroku一致,确保存储服务连接正常。验证RAILS_MASTER_KEY准确性:通过
heroku config:get RAILS_MASTER_KEY获取Heroku上的原始密钥,和Render环境变量里的RAILS_MASTER_KEY逐字符对比,排除拼写、空格等错误——这个密钥用于解密credentials,若不匹配会导致Active Storage的签名URL生成失败。刷新Blob元数据与URL生成逻辑:在Render的Rails控制台执行
ActiveStorage::Blob.all.each { |b| b.refresh_metadata! },强制刷新所有blob的元数据。同时检查config.action_storage.service在Render环境下是否正确指向当前使用的存储服务,避免旧环境的URL生成规则残留。核对数据库迁移完整性:在Render的数据库控制台执行
SELECT COUNT(*) FROM active_storage_blobs;,和Heroku上的记录数对比,确认Active Storage相关表的数据没有丢失。若数据不全,需重新导出Heroku数据库并完整导入到Render。检查CORS与资源域名配置:如果使用第三方存储服务(如S3),确认其CORS规则允许Render应用的域名访问资源。同时设置
config.action_controller.asset_host为Render应用的域名,确保嵌入内容的URL生成符合当前环境。
内容的提问来源于stack exchange,提问作者Chrismisballs

