使用AWS s3 image_url进行生产和开发

时间:2014-11-13 00:38:15

标签: ruby-on-rails ruby heroku amazon-s3

我通过生产管理功能上传图片。然后我使用pg_restore将我的生产数据库下拉到我的本地数据库。问题是现在我的所有图像链接都在开发中被破坏了。我希望我的开发环境能够使用AWS s3图像网址进行生产和开发。

查看游戏机内部,我看到了:

本地Rails控制台

$ Image.last.photo.url
$ "/assets/products/3/product/__35.JPG?1415467267"

Heroku控制台

$ Image.last.photo.url
$ "https://s3.amazonaws.com/app_name/app/public/assets/products/3/product/__35.JPG?1415467267"

我正在使用以下相关宝石: paperclip,asset_sync和rmagick

My Image类正在使用回形针进行存储:

has_attached_file :photo, PAPERCLIP_STORAGE_OPTS

“开发”选项在development.rb和production.rb

中是相同的
PAPERCLIP_STORAGE_OPTS = {  
  :styles => {:mini => '48x48>',
    :small    => '100x100>',
    :medium   => '200x200>',
    :product  => '320x320>',
    :large    => '600x600>' },
  :default_style => :product,
  :url => "/assets/products/:id/:style/:basename.:extension",
  :path => ":rails_root/public/assets/products/:id/:style/:basename.:extension"
}

1 个答案:

答案 0 :(得分:0)

我几乎发布了这个问题,然后想出来了。感觉我应该分享,万一其他人遇到同样的问题。

config/environments/production.rb我有:

config.after_initialize do
  Paperclip::Attachment.default_options[:storage] = :s3
end

以上代码也应添加到config/environments/development.rb

现在使用:path而非development.rb编辑同一app个文件中的图片:rails_root

PAPERCLIP_STORAGE_OPTS = {  
  # :styles, :default_style, and :url are the same as above 
  :path => "app/public/assets/products/:id/:style/:basename.:extension"
}