Paperclip S3图像路径问题

时间:2012-07-07 17:04:11

标签: amazon-s3 paperclip ruby-on-rails-3.2

我刚刚从Rails 3.1升级到Rails 3.2.6,我的回形针照片路径现在已经生产。

photo.rb

if Rails.env == "production"
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :url => "/app/public/system/images/:id/:style/:basename.:extension",

我需要生成的路径如下:http://s3.amazonaws.com/photoramblr/app/public/system/images/5/thumb_large/image.jpg

但是上述网址设置会导致:http://s3.amazonaws.com/photoramblr/app/public/app/public/system/images/5/thumb_large/image.jpg

我也尝试将回形针网址设置为:url => "/system/images/:id/:style/:basename.:extension",但结果是这个网址:http://s3.amazonaws.com/photoramblr/images/5/thumb_large/image.jpg

有关如何正确设置此事的任何想法?

更新:嗯,我仍然不明白它是如何工作的,但我通过将文件移动到它正在查找的位置来“修复”这个。

1 个答案:

答案 0 :(得分:1)

尝试添加路径参数,替换url参数并指定存储文件的存储桶名称下的路径,并从存储桶和提供的路径构建URL。以下是paperclip s3 docs的链接以获取更多详细信息。如果您提供了url参数,则会相对于您的“app / public”进行处理。这就解释了为什么你的结果图像路径加倍“app / public”。 Ryan Bate的paperclip tutorial也解释了这种行为。 在您的情况下,您的代码将如下所示;

if Rails.env.production?
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :path => "app/public/system/images/:id/:style/:basename.:extension",

您的结果链接将是(我假设您的存储桶名称是来自您链接的照片加载器); s3.amazonaws.com/photorambler/app/public/system/images/5/thumb_large/image.jpg