【问题标题】:Ruby on Rails with Figaro and PaperclipRuby on Rails 与 Figaro 和 Paperclip
【发布时间】:2014-03-22 02:02:56
【问题描述】:

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

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 一起使用。感谢任何可以帮助我的人。

【问题讨论】:

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


    【解决方案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']
      }
    }
    

    【讨论】:

    • 是的,就是这样。嗯,文件仍然没有在存储桶中结束(浏览器中没有错误消息)。文件夹已创建,但没有文件。不知道那里发生了什么。明天会看这个并检查这个作为答案,如果我不能解决,可能会提出一个新问题。
    【解决方案2】:

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

    【讨论】:

    • 非常感谢。我输入主机名是为了更好地衡量,但我认为我丢失的文件更多地与我需要调整我的 :path 并且我需要比我正在做的更多地刷新我的 S3 页面这一事实有关。
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多