【问题标题】:Cannot load Rails.config.active_storage.service无法加载 Rails.config.active_storage.service
【发布时间】:2018-12-14 19:42:43
【问题描述】:

我正在使用 Active Storage 设置一个新的 rails 5.2 应用程序,并使用 AWS 来托管生产中的图像。

但是,我在读取凭据时遇到问题:

2018-07-06T08:11:52.625415+00:00 app[web.1]: ! Unable to load application: Aws::Sigv4::Errors::MissingCredentialsError: Cannot load `Rails.config.active_storage.service`:
2018-07-06T08:11:52.625432+00:00 app[web.1]: missing credentials, provide credentials with one of the following options:
2018-07-06T08:11:52.625435+00:00 app[web.1]:   - :access_key_id and :secret_access_key
2018-07-06T08:11:52.625437+00:00 app[web.1]:   - :credentials
2018-07-06T08:11:52.625479+00:00 app[web.1]:   - :credentials_provider

这是一个现有的 S3 存储桶,我专门为此应用创建了一个新用户。我对 CORS 等感到满意。

用户设置在 S3FullAccess 组下。

我已经通过$EDITOR="atom --wait" rails credentials:edit在我的应用中编辑了凭据

文件内容:

aws:
  access_key_id: [my access key]
  secret_access_key: [my secrect key]

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: [my secret key base]

感谢这是 YAML 格式,我玩过在键上使用一个空格和一个选项卡,但这似乎没有什么区别。

当我保存并关闭文件时,终端会写New credentials encrypted and saved.

我也安装了gem 'aws-sdk-s3', '~>1', require: false

还有 config/storage.yml

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
  service: S3
  access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
  secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
  region: eu-west-2
  bucket: [mybucket]

关于我可能做错的任何建议?

【问题讨论】:

  • 试试gem 'aws-sdk', '~&gt; 3',或者只是gem 'aws-sdk'
  • 这不是宝石。试过gem 'aws-sdk'
  • 你能分享config/storage.yml吗?
  • @GeorgeClaghorn 添加到帖子
  • 不需要整个“aws-sdk”就够了gem "aws-sdk-s3", require: false

标签: ruby-on-rails amazon-s3 rails-activestorage ruby-on-rails-5.2


【解决方案1】:

这在 huroku 上对我有用。在设置配置变量中添加 RAILS_MASTER_KEY 作为键。

在您的 rails 应用程序的 config/master.key 文件中,添加字符链作为您在 heroku 中的值。

【讨论】:

  • 谢谢!我只是被这个刺痛了。其他人的快速提示,请尝试:heroku config:set RAILS_MASTER_KEY=$(echo ./config/credentials/production.key)
【解决方案2】:

我有同样的错误。在我的情况下,问题既不在于配置,也不在于master.key。开始 Redis server 修复了错误。对于 MacOS:

$> redis-server

【讨论】:

    【解决方案3】:

    在 Rails 5.2 中,执行以下操作:

    第1步。在config/storage.yml添加

    amazon:
      service: S3
      access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
      secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
      region: ap-south-1
      bucket: my-bucket
    

    第 2 步:

    Copy config/credentials.yml.example to config/credentials.yml
    

    并在config/credentials.yml中添加以下内容

      development:
        AWS_ACCESS_KEY_ID: YOUR-KEY
        AWS_SECRET_ACCESS_KEY: YOUR-SECRET
    

    credentials.yml 已默认添加到.gitignore

    第 3 步:

    application.rb

    取消注释以下内容:

    # Load ENV variables from credentials.yml file
    config.before_configuration do
      env_file = File.join(Rails.root, 'config', 'credentials.yml')
      YAML.load(File.open(env_file))[Rails.env].each do |key, value|
        ENV[key.to_s] = value
      end if File.exists?(env_file)
    end
    

    重启服务器并再次尝试上传。

    【讨论】:

      【解决方案4】:

      进入config/environments/development.rb 并确保你有这个:

      config.active_storage.service = :local

      config/environments/production 你应该有

      config.active_storage.service = :amazon

      amazon 用于 Amazon S3。它可以更改为您要使用的任何存储服务。有关存储服务和 Active Storage 的更多信息,请参阅 Rails 文档。

      【讨论】:

        【解决方案5】:

        解决此问题的另一种方法(对我有用) 在控制台中运行 rake secret 复制密钥 转到配置并打开 application.rb 类里面的类型:config.secret_key_base = "paste the output of rake secrete"

        【讨论】:

          【解决方案6】:

          我认为您的服务器中缺少 master.key 文件。在config/master.key 中检查您的本地存储库(默认情况下,此文件已添加到您的.gitignore)。 将此文件添加到您的服务器或设置ENV["RAILS_MASTER_KEY"]

          【讨论】:

          • 谢谢! @OctaviaTogami
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-26
          • 1970-01-01
          • 2011-01-24
          • 2010-10-21
          • 1970-01-01
          相关资源
          最近更新 更多