當我部署到Heroku的和運行heroku run rake db:migrate
我得到的錯誤:Rails的Heroku的無效配置選項
ArgumentError: invalid configuration option `:aws_access_key_id'
配置/初始化/ aws.rb
if Rails.env.production?
S3Client = Aws::S3::Client.new(
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
aws_region: 'us-east-1'
)
end
配置/初始化/ carrierwave.rb
if Rails.env.production?
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'],
region: 'us-east-1'
}
config.fog_directory = ENV['S3_BUCKET']
end
end
爲什麼我得到`invalid configuration option'錯誤?
編輯
新的配置/初始化/ carrierwave.rb文件:
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: 'us-east-1',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
aws_region: 'us-east-1'
}
config.fog_directory = ENV['S3_BUCKET']
#config.fog_attributes = {:signature_version => :v4}
end
end
配置/初始化/ aws.rb現在是空的。
這已修復了invalid configuration option
問題。但是,當我運行RAILS_ENV=production bundle exec rake assets:precompile
時,它被替換爲錯誤Missing required arguments: aws_access_key_id, aws_secret_access_key
。
更令人困惑的是,我在上述更改後成功運行了RAILS_ENV=production bundle exec rake assets:precompile
,但它突然停止工作。
你在heroku或者你自己的機器上運行預編譯嗎? – max
我自己的機器。我認爲。我只需在命令行輸入'RAILS_ENV = production bundle exec rake assets:precompile'。 – Bazley
在這種情況下,您需要在本地機器上設置ENV變量。我通常使用dotenv。我也讓Heroku編譯資產。 – max