Rails - Activestorage导致Rails配置失败

4

我在使用Rails Active Storage将我的应用程序部署到Heroku时遇到了问题。在开发中,我没有任何问题,可以使用以下代码:

config.active_storage.service = :local

一切正常。

然而,在我的production.rb文件中,我设置了以下代码:

config.active_storage.service = :amazon

并按照设置指南进行了操作。

我的storage.yml如下所示:

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

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

 amazon:
    service: S3
    access_key_id: <%= ENV['S3_ACCESS_KEY'] %>
    secret_access_key: <%= ENV['S3_SECRET_ACCESS_KEY'] %>
    region: <%= ENV['S3_REGION'] %>
    bucket: <%= ENV['S3_BUCKET_NAME'] %>

当我运行git push heroku master时,应用程序将部署,但是日志中会出现以下错误:"检测rails配置失败"。
我无法打开该应用程序,heroku日志将显示以下错误:"缺少:amazon Active Storage服务的配置。可用于[:test]的配置"。
如果我将config.active_storage.service = :amazon更改为config.active_storage.service = :local,则会出现相同的错误。但是,如果我将其更改为config.active_storage.service = :test,则该应用程序将在没有错误的情况下部署,并且我可以像预期的那样打开该应用程序并上传文件。
我已经搜索了网络,但没有看到其他人遇到这个错误,因此欢迎任何评论或想法。谢谢你的帮助。

你使用什么来存储环境变量?Figaro还是其他什么东西? - Mark Merritt
变量存储在Heroku配置变量中。 - Ryan
当您运行$ heroku config命令时,是否所有的环境变量都会显示出来?并且变量名正确吗? - Mark Merritt
是的,它们会显示出来。 - Ryan
听起来你是在测试环境中运行。也许你的某个配置变量将Rails环境或Rack环境设置为测试。你能检查一下吗? - stephenmurdoch
1个回答

2
问题在于storage.yml文件中的缩进。local:下面的缩进是一个空格,而amazon:下面的缩进是两个空格。
我曾经遇到过同样的问题,很难注意到多了一个空格。在YAML中,空格很重要,但Ruby开发人员不习惯空格很重要这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接