Ruby on Rails with Figaro and Paperclip



我现在正在使用 localhost 并安装了费加罗宝石来帮助我在 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']
  }
}

然后我将以下代码放在费加罗生成的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 结合使用。感谢任何可以帮助我的人。

我认为只有一个语法错别字。 环境是一个变量;这是一个哈希值,而不是一个符号。 只需从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']
  }
}
<</div> div class="one_answers">

根据您的评论,这是现在 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 服务器。原因是配置文件在初始化时加载,并为服务器的会话维护

最新更新