Ruby Rails + Michael Hartl 教程 + VPS = AWS 问题
Ruby on Rails + Michael Hartl tutorial + VPS = issues with AWS
我已经完成了 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
根本问题是 Carrier Wave 期望填充您的 AWS 环境变量,但它们并未在您的生产环境中设置。
我建议你看看 dotenv
gem 这样的东西,它可以找到 here。多个环境中的环境变量内务处理可能是一个真正的痛苦,因此它有助于拥有一个工具来促进。 Dotenv(以及类似的其他人)为此提供了更多的交钥匙方法。
请注意,最近推出的 secrets.yml
for Rails secret management 是朝着正确方向迈出的重要一步,但仍然需要一些 code/know 如何操作利用。
无论如何,在管理任何带有机密的文件时要非常小心。至少,该文件应该在您的 .gitignore
中,这样您就不会泄露您的秘密。
我已经完成了 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
根本问题是 Carrier Wave 期望填充您的 AWS 环境变量,但它们并未在您的生产环境中设置。
我建议你看看 dotenv
gem 这样的东西,它可以找到 here。多个环境中的环境变量内务处理可能是一个真正的痛苦,因此它有助于拥有一个工具来促进。 Dotenv(以及类似的其他人)为此提供了更多的交钥匙方法。
请注意,最近推出的 secrets.yml
for Rails secret management 是朝着正确方向迈出的重要一步,但仍然需要一些 code/know 如何操作利用。
无论如何,在管理任何带有机密的文件时要非常小心。至少,该文件应该在您的 .gitignore
中,这样您就不会泄露您的秘密。