缺少必需的参数:ras测试中的aws_access_key_id,aws_secret_access_key
我正在做hartle教程的第11章。 当我运行heroku run rake db:migrate
我收到此错误:
Missing required arguments: aws_access_key_id, aws_secret_access_key
我在这里输入链接描述的答案解决了它并成功迁移。但是现在当我运行时
bundle exec rake test
它给了我:
rake aborted! ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
这是我的carrierwave文件:
CarrierWave.configure do |config| config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => ENV['S3_KEY'], :aws_secret_access_key => ENV['S3_SECRET'], :region => ENV['S3_REGION'], :endpoint => ENV['S3_ENDPOINT'] } if Rails.env.test? || Rails.env.development? config.storage = :file config.enable_processing = false config.root = "#{Rails.root}/tmp/uploads/#{DateTime.now.to_f}.#{rand(999)}.#{rand(999)}" else config.storage = :fog end config.cache_dir = "#{Rails.root}/tmp/uploads/#{DateTime.now.to_f}.#{rand(999)}.#{rand(999)}" config.fog_directory = ENV['S3_BUCKET_NAME'] config.fog_public = false config.fog_attributes = {} end
我在这里输入链接描述测试了答案,但它对我不起作用。
我会在测试助手中设置这些:
ENV['S3_KEY'] = 'S3_KEY' ENV['S3_SECRET'] = 'S3_SECRET' ENV['S3_REGION'] = 'S3_REGION' ENV['S3_ENDPOINT'] = 'S3_ENDPOINT'
或者,你可以这样做
if ! Rails.env.test? config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => ENV['S3_KEY'], :aws_secret_access_key => ENV['S3_SECRET'], :region => ENV['S3_REGION'], :endpoint => ENV['S3_ENDPOINT'] } end
但我认为第一个更好,因为它不会用测试代码污染您的生产代码。