【发布时间】:2016-07-15 14:51:43
【问题描述】:
我有一个带有 Paperclip 的 Rails 应用,并且我使用 Google Cloud Storage。到现在为止还挺好。
为了避免开发和生产使用相同的存储,我决定根据环境将默认的回形针路径更改为另一个。这样每个环境都有自己的目录。然后我不断地将旧图像从默认回形针路径移动到新图像。
问题是现在旧图像给出 404,而我上传的任何新图像都可以正常工作。有什么办法可以解决吗?
这是以前的设置:
module MyApp
class Application < Rails::Application
config.paperclip_defaults = {
storage: :fog,
fog_public: true,
fog_directory: 'myapp-01',
fog_credentials: {
google_storage_access_key_id: ENV['GOOGLE_STORAGE_ID'],
google_storage_secret_access_key: ENV['GOOGLE_STORAGE_SECRET'],
provider: 'Google'
}
}
}
我使用以下设置覆盖默认值:
path: ":rails_env/:class/:attachment/:id_partition/:style/:filename",
url: "/:rails_root/:class/:attachment/:id_partition/:style/:filename"
我的猜测是,仅使用新路径更新 Paperclip 配置并将所有图像移动到新目录是不够的。您还需要更新旧记录...
如果您想知道,旧记录指向root/images/?123456789。
【问题讨论】:
-
你给我们看一些代码怎么样?生产/开发设置是什么?您的
has_attached_file,就像您复制图像一样,您是否也在同步数据库?如果是这样,怎么做?我也不确定您所说的“旧图像给出 404”是什么意思,您不应该改用新路径吗? -
我的猜测是谷歌不让我看到图片。也许一些丢失的权限设置?老实说,
url设置并不能真正起作用,因为在新图像中,src具有存储桶的默认 Google 网址。
标签: ruby-on-rails paperclip google-cloud-storage image-uploading