Heroku没有使用Paperclip和AWS显示上传的照片

时间:2016-10-23 22:25:57

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

我正在使用回形针将照片加载到heroku网站。我没有得到任何错误,我的对象已创建,但我没有照片。 我正在使用的宝石版本是:

gem 'paperclip', '~> 4.3', '>= 4.3.6'
gem 'aws-sdk', '< 2.0'

我的配置设置都正确,我在俄勒冈州,所以我将AWS_REGION设置为'us-west-2'。 我相信我的production.rb设置正确,

config.paperclip_defaults = {
  storage: :s3,
  s3_credentials: {
    bucket: ENV.fetch('S3_BUCKET_NAME'),
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
    s3_region: ENV.fetch('AWS_REGION'),
  }
}

我的公司模型应该有照片

class Company < ActiveRecord::Base
  has_attached_file :logo_image, styles: { medium: "300x300>", 
                                           thumb: "100x100>" }, 
                    :default_url => ActionController::Base.helpers.asset_path("noimage1.jpg")

在我的heroku日志中:

[paperclip] saving /companies/logo_images/000/000/743/original/baking.jpg
[AWS S3 200 0.218362 0 retries] put_object(:acl=>:public_read,
    :bucket_name=>"mybucketname", :content_length=>64071,
    :content_type=>"image/jpeg",
    :data=>Paperclip::UploadedFileAdapter: baking.jpg,
    :key=>"companies/logo_images/000/000/743/original/baking.jpg")

我正在以这种方式将图像渲染到我的展示页面:

<%= image_tag(@company.logo_image.url(:medium)) %>

在我看来,我的照片正在保存到存储桶中,但出于某种原因,它无法呈现给页面。

1 个答案:

答案 0 :(得分:0)

我通过在我的production.rb中的config.paperclip_defaults中添加url和path属性来解决它。

url: ":s3_domain_url",
path: ":class/:id.:style.:extension",