【问题标题】:Ruby on Rails + Michael Hartl tutorial + VPS = issues with AWSRuby on Rails + Michael Hartl 教程 + VPS = AWS 问题
【发布时间】:2015-05-21 18:49:04
【问题描述】:

我已经完成了 Michael Hartl 教程,我正在尝试使用 https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04 部署它。不幸的是,我被 RAILS_ENV=production rake db:migrate 困住了,因为它会产生以下错误:

ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

/home/me/simpleapp/config/initializers/carrier_wave.rb:3:in `block in <top (required)>'

/home/me/simpleapp/config/initializers/carrier_wave.rb:2:in `<top (required)>'

/home/me/simpleapp/config/environment.rb:5:in `<top (required)>

'

我什至已经 1:1 复制了这些文件,但这个错误仍然存​​在。知道我该如何解决吗?我真的厌倦了尝试使用来自网络的不同解决方案来修复它。 谢谢

编辑:我正在添加我的carrier_wave 文件:

if Rails.env.production?
  CarrierWave.configure do |config|
    config.fog_credentials = {
      # Configuration for Amazon S3
      :provider              => 'AWS',
      :aws_access_key_id     => ENV['S3_ACCESS_KEY'],
      :aws_secret_access_key => ENV['S3_SECRET_KEY']
    }
    config.fog_directory     =  ENV['S3_BUCKET']
  end
end

【问题讨论】:

  • 您需要在生产环境中设置 AWS 环境变量。可能您的初始化程序 (carrier_wave.rb) 期望在您的生产环境中设置 ENV['aws_access_key_id']ENV['aws_secret_access_key'] 或类似的东西。
  • 在某个阶段,我尝试在任何地方设置它 -> 我得到了将其设置在 secrets.yml 中的建议。但它不起作用:/
  • 你能用你的载波初始化器的前 10 行更新你的帖子吗?
  • 我已经更新了我的第一篇文章。我尝试过:将这些值直接添加到文件中将值添加到secrets.yml 将值添加到.bashrc
  • 在您的 prod 机器上,尝试printenv | grep 'S3'。看到这三个 S3 环境变量了吗(S3_ACCESS_KEYS3_SECRET_KEYS3_BUCKET)?

标签: ruby-on-rails ruby-on-rails-4 amazon-web-services nginx fog


【解决方案1】:

根本问题是 Carrier Wave 期望填充您的 AWS 环境变量,但它们并未在您的生产环境中设置。

我建议您查看dotenv gem 之类的东西,它可以找到here。多个环境中的环境变量管理可能是一个真正的痛苦,因此有一个工具来促进它会有所帮助。 Dotenv(和其他类似的)为此提供了更多的交钥匙方法。

请注意,最近为 Rails 机密管理引入的 secrets.yml 是朝着正确方向迈出的重要一步,但仍需要一些代码/知道如何使用。

无论如何,请务必小心管理任何包含机密的文件。至少,该文件应该在您的 .gitignore 中,这样您就不会传播您的秘密。

【讨论】:

  • 好的。我想我现在明白了。我必须在 app? 的根文件夹中设置 .env 文件(env.production?)。然后从那里设置所有的键。我将 Dotenv::Railtie.load 添加到 config/application.rb。我正在阅读他们的网页,这对我来说有点不清楚。
  • 安装 gem。创建~/.env(是在根文件夹中)并在那里设置环境变量(例如S3_ACCESS_KEY=12ABC ...)。重启 Rails。您仍然应该阅读文档以了解如何为每个环境创建单独的 .env 文件。
  • 是的!我在此期间得到了它!谢谢!这对我来说是很好的教训!
猜你喜欢
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多