ruby-on-rails - Rails heroku 无效配置选项

标签 ruby-on-rails heroku

当我部署到 heroku 并运行 heroku run rake db:migrate 时,我收到错误:

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

config/initializers/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

为什么我会收到“无效的配置选项”错误?

编辑

新的 config/initializers/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

config/initializers/aws.rb 现在是空的。

这修复了无效的配置选项问题。但是,当我运行 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,但它突然停止工作了。

最佳答案

创建 Aws::S3::Client 时的选项不以 aws_ 开头。那将是愚蠢的。

if Rails.env.production?
  S3Client = Aws::S3::Client.new(
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
    region: 'us-east-1'
  )
end

但是您实际上不需要传递凭据选项:

Default credentials are loaded automatically from the following locations:

  • ENV['AWS_ACCESS_KEY_ID'] and ENV['AWS_SECRET_ACCESS_KEY']

关于ruby-on-rails - Rails heroku 无效配置选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33173982/

相关文章:

ruby-on-rails - 在 Rails 应用程序中查找未使用的图像?

ruby-on-rails - rake 数据库 :seed refuses to insert data into a particular database column

css - 在HTML中使用input_tag、a_tag、div_tag和button_tag作为按钮的规则和优势

ruby-on-rails - Heroku 部署 Gemfile.lock 问题

ruby-on-rails - 如何使用 Logger.new 创建文件夹(如果不存在)?

ruby-on-rails - 订购与第二个模型相关的第一个模型

ruby-on-rails - 1and1.com 到 Heroku

Rails 2.3.5 拒绝 Heroku Push

ruby-on-rails - rails 4 回形针上传到亚马逊 s3 不起作用

javascript - meteor 构建中的箭头功能导致 Heroku 部署崩溃