带有Figaro和Paperclip的Ruby on Rails

时间:2014-02-20 21:00:40

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

我现在正在使用localhost并安装了Figaro gem来帮助我使用Paperclip和我的S3存储桶进行测试。当我尝试上传某些内容时,我收到此消息:

missing required :bucket option

在development.rb中,我插入了以下代码:

config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
  bucket: :ENV['AWS_BUCKET'],
  access_key_id: :ENV['AWS_ACCESS_KEY_ID'],
  secret_access_key: :ENV['AWS_SECRET_ACCESS_KEY']
  }
}

然后我将以下代码放在Figaro生成的application.yml文件中:

development:
  AWS_BUCKET: (the actual name of my bucket)
  AWS_ACCESS_KEY_ID: (the actual access key)
  AWS_SECRET_ACCESS_KEY: (etc)

我会说,当我宣布存储桶直接进入我正在使用的模型时,它似乎确实有用(我的存储桶中生成了一个新文件夹),但图像实际上从未出现在目标中(也许是一个单独的问题或者可能不是。)

我知道我在这里遗漏了一些明显的东西,我可能没有做对。使用Rails v4和aws-sdk v1.34以及Figaro v0.7.0。感谢任何可以帮助我的人。

2 个答案:

答案 0 :(得分:1)

我认为只有语法拼写错误。 ENV是一个变量;它是哈希而不是符号。只需从:前面移除ENV即可。它应该是:

config.paperclip_defaults = {
storage: :s3,
  s3_credentials: {
    bucket: ENV['AWS_BUCKET'],
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  }
}

答案 1 :(得分:1)

除了您的评论之外,这是现场代码100%正在为我们工作:

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

每次更改这些详细信息时,还要确保重新启动rails服务器。原因是配置文件在初始化时加载,并为服务器的会话维护