[英]When I rake db:migrate, an ArgumentError appears
我想从远程提交重新开始我的项目,因此,在下载zip文件并放回所有.gitignore文件之后,当我尝试耙db:migrate时,我收到此错误。
ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
2.1.5/gems/fog-core-1.25.0/lib/fog/core/service.rb:234:in `validate_options'
2.1.5/gems/fog-core-1.25.0/lib/fog/core/service.rb:258:in `handle_settings'
/s/ruby-2.1.5/gems/fog-core-1.25.0/lib/fog/core/service.rb:98:in `new'
/gems/fog-core-1.25.0/lib/fog/storage.rb:25:in `new'
gems/carrierwave-carrierwave/uploader/configuration.rb:83:in `eager_load_fog'
//.rvm/gems/ruby-2.1.5/gems/carrierwave-0.10.0/lib/carrierwave/uploader/configuration.rb:96:in `fog_credentials='
/bloccit/config/initializers/fog.rb:2:in `block in <top (required)>'
e/.rvm/gems/ruby-2.1.5/gems/carrierwave-0.10.0/lib/carrierwave/uploader/configuration.rb:118:in `configure'
因此,我知道我的fog.rb文件有问题,但是我该如何解决? 在哪里放置AWS代码的值的好地方?
我的fog.rb
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
config.fog_directory = ENV['AWS_BUCKET']
config.fog_public = true
end
您可以将值放在config内的yml文件中,按环境分隔各个部分-就像在config / database.yml中一样。 当然,您需要在应用启动时加载文件。 建议不要提交此文件。
或者,您可以在应用中创建一个.env文件。 查看https://github.com/bkeepers/dotenv
为了快速解决,您可以在rake任务中将值作为环境变量发送。
AWS_ACCESS_KEY_ID=123 AWS_SECRET_ACCESS_KEY=abc rake db:migrate
通过以下两种方法,您可以摆脱此错误。 错误是因为您的系统中没有可用的环境变量。
如果您有ENV['AWS_ACCESS_KEY_ID']
和其他环境变量,则将它们作为字符串传递给for.rb
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'xxxxxxxx',
aws_secret_access_key: 'xxxxxxxxxxx'
}
config.fog_directory = 'xxxxxxx'
config.fog_public = true
end
如果您没有凭证,或者您不想在开发模式下使用AWS空间,则可以使用文件系统保存图像。
在app/uploaders
下的上载文件中将storage :fog
更改为storage :file
。 无需其他更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.