0

我正在使用 Heroku,当我显示配置变量时:

=== someapp-staging Config Vars
DATABASE_URL:                           xxx
LANG:                                   en_US.UTF-8
NEW_RELIC_LICENSE_KEY:                  xxx
NEW_RELIC_LOG:                          stdout
RACK_ENV:                               staging
RAILS_ENV:                              staging
SENDGRID_PASSWORD:                      123456
SENDGRID_USERNAME:                      app123456@heroku.com
WEBSOLR_URL:                            https://index.websolr.com/solr/0e1122334455
sendgrid_password:                      654321
sendgrid_username:                      app654321@heroku.com
websolr_url:                            https://index.websolr.com/solr/0e1122334455

...有些定义不止一次。

Heroku 的建议是使用大写键设置所有变量。来自https://devcenter.heroku.com/articles/add-ons

别名必须始终符合与配置变量相同的命名约定。它们必须以字母开头,并且只能包含大写字母数字字符或下划线。

1

那么......figaro heroku:set --remote staging -e staging例如,当我们执行时,为什么 Figaro 不会自动将键设置为大写?

2

接下来做什么?application.yml我必须使用混合键设置变量,例如:

staging:
  <<: *default
  app_name: 'someapp (staging)'
  SENDGRID_USERNAME: app123456@heroku.com
  SENDGRID_PASSWORD: 123456
  WEBSOLR_URL: 'https://index.websolr.com/solr/0e1122334455'
  geocoder_api_key: 'azertyuiop123456789'
  airbrake_project_id: "987654"
  airbrake_project_key: 'a123456z789456123'

谢谢


ps:这些不是我的真实凭据。


更新(来自laserlemon的回答)

https://github.com/laserlemon/figaro/issues/238

您应该将您的 application.yml 写入您的应用程序将使用的确切情况。虽然 Heroku 提出了某种约定,但不能保证每个人都会(或可以)全面一致地使用该约定。因此,Figaro 不会自动大写、小写或其他方式。希望这是有道理的!

4

1 回答 1

0

Heroku 的最佳答案:

在这种情况下,config vars 的行为是由于底层 Linux 操作系统区分大小写。“幕后”配置变量只是管理要在测功机上设置的 Unix 环境变量的一种方式,因此,我们对这些环境变量的处理相当少,以使它们与任何其他基于 Linux 的主机保持一致 - 如果我们开始适应这种情况你可能会自动发现它在本地不工作而在 Heroku 上工作的情况。

于 2016-05-16T16:44:27.940 回答