无法使用rails app和paperclip将图像上传到s3存储桶

时间:2014-11-26 10:03:41

标签: ruby-on-rails-4 amazon-web-services amazon-s3 environment-variables paperclip

嗨,任何人都可以指出我在做错的方向。我正在尝试使用开发中的rails应用程序将图像上传到爱尔兰欧盟地区的S3存储桶。这是我收到错误的错误

  • ProductsController中的SocketError
  • getaddrinfo:提供nodename或servname,或者不知道

在以下行中:TCPSocket.open(conn_address,conn_port,@ local_host,@ local_port)

我正在使用aws-sdk gem和paperclip 4.2。

以下是一些代码段

在:

config/enviroments/development.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_host_name => "s3-eu-west-1.amazonaws.com",
  :s3_credentials => {
  :bucket => 'S3_BUCKET_NAME',
  :access_key_id => 'AWS_ACCESS_KEY_ID',
  :secret_access_key => 'AWS_SECRET_ACCESS_KEY'
 }

 config/aws.yml
    development:
       AWS_ACCESS_KEY_ID: "xxx"
       AWS_SECRET_ACCESS_KEY: "xxx"
       S3_BUCKET_NAME: "xxx"
       s3_host_name: 's3-eu-west-1.amazonaws.com'

在我的模特中

class Product < ActiveRecord::Base

  validates :avatar,
    attachment_content_type: { content_type: /\Aimage\/.*\Z/ },
    attachment_size: { less_than: 5.megabytes }

  has_attached_file :avatar, styles: {
    thumb: '100x100>',
    square: '200x200#',
    medium: '300x300>'
  }
end

我错过了什么?我查看了我在网上找到的每一个例子,并尝试调整但没有运气。

由于

2 个答案:

答案 0 :(得分:1)

试试这个:

#config/enviroments/development.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_host_name => "s3-eu-west-1.amazonaws.com",
  :s3_credentials => {
  :bucket => ENV["S3_BUCKET_NAME"],
  :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
  :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
 }

答案 1 :(得分:0)

好的,我已经通过将AWS凭证硬编码到development.rb文件中解决了这个问题。所以看起来问题是aws.yml文件没有被加载,有没有人知道为什么或如何解决这个问题?

再次感谢