Heroku中的多行配置变量

时间:2011-08-04 13:49:46

标签: configuration heroku

我有一个Rails应用程序,在使用Paypal进行交易之前加载了许多RSA证书。在我的开发机器上,这些证书是从文件系统中的文件中读取的,但是因为Heroku(我用于处理)很大程度上是只读的,所以我无法上传这些文件所以我猜我必须要从配置变量中读取证书(参见Heroku Config Vars)。

因为证书由多行数据组成,所以我不确定如何将它们设置为变量,即使这是可能的。有谁知道我怎么做或者能够提出另一种方法?

非常感谢, 埃迪

6 个答案:

答案 0 :(得分:50)

我发现添加多行配置的一种简单方法是双引号,然后从我的本地环境回显它们

heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"

答案 1 :(得分:9)

我们需要做同样的事情。

您可以用双引号包装变量值:

bobvila@bobuntu:~/svnroot/app/myapp$ heroku config:add woodchuck="How much wood
> could a woodchuck chuck
> if a woodchuck could chuck wood"
Adding config vars and restarting myapp... done, v25
woodchuck: How much wood
could a woodchuck chuck
if a woodchuck could chuck wood
bobvila@bobuntu:~/svnroot/app/myapp$ heroku config
=== Config Vars for myapp
woodchuck:                       How much wood
could a woodchuck chuck
if a woodchuck could chuck wood
bobvila@bobuntu:~/svnroot/app/myapp$ 

如果您使用Foreman进行localhost开发,.env文件不支持多行变量,因此您需要在启动Foreman之前将其导出到shell

答案 2 :(得分:8)

如果要从文件内容中设置Heroku配置值,可以使用以下shell技巧:

$ heroku config:set SECRET_KEY="$(cat path/to/secret.key)"

可以通过在值周围加上引号来直接设置多行值:

$ heroku config:set SECRET_KEY='first line
> second line'

如果您使用Foreman在本地运行(现在为heroku local),则它不支持多行变量。您必须首先使用某些东西将它们注入环境,例如envdir

$ envdir my-env-dir heroku local

答案 3 :(得分:6)

或者您可以转到Heroku信息中心的设置标签,打开配置文件并将其粘贴。

Heroku Settings

轻松自负。

答案 4 :(得分:3)

我的回答有点迟了但最近我遇到了同样的问题,多行环境问题。 Heroku上的变量。 我的解决方案是使用strict_encode64

encoded_secret = Base64.strict_encode64("my_multi_line_secret")

添加密钥:

$ heroku config:set SECRET_KEY='the encoded_secret string here'

在代码中,然后使用Base64.strict_decode64(ENV['SECRET_KEY'])

对其进行解码

答案 5 :(得分:1)

如何使用NodeJS处理此问题的示例。将\\n字符替换为\n

,以消除价值
process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n')

取自: Escaping issue with firebase privateKey as a Heroku config variable