Ответ 1
Я обнаружил, что простой способ добавления многострочных конфигураций состоит в том, чтобы удвоить их, а затем отбросить их из локальной среды
heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"
У меня есть приложение Rails, которое загружает несколько сертификатов RSA до совершения транзакции с помощью Paypal. На моей машине разработки эти сертификаты читаются из файлов в файловой системе, но поскольку Heroku (который я использую для delpoyment) в основном доступен только для чтения, я не могу загрузить эти файлы, поэтому я предполагаю, что мне придется читать сертификаты из переменных конфигурации (см. Heroku Config Vars).
Поскольку сертификаты состоят из нескольких строк данных, я не уверен, как их устанавливать как переменные или даже если это возможно. Кто-нибудь знает, как я могу это сделать или предложить альтернативный подход?
Большое спасибо, Эдди
Я обнаружил, что простой способ добавления многострочных конфигураций состоит в том, чтобы удвоить их, а затем отбросить их из локальной среды
heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"
Нам нужно было сделать то же самое.
Вы можете обернуть значение переменной в двойные кавычки:
[email protected]:~/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
[email protected]:~/svnroot/app/myapp$ heroku config
=== Config Vars for myapp
woodchuck: How much wood
could a woodchuck chuck
if a woodchuck could chuck wood
[email protected]:~/svnroot/app/myapp$
Если вы используете Foreman для разработки localhost, файл .env не поддерживает многострочные переменные, поэтому вам нужно будет экспортировать его в оболочку перед запуском Foreman
Мой ответ приходит немного поздно, но у меня была такая же проблема недавно с многострочным env. переменных на 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'])
Если вы хотите установить значения конфигурации Heroku из вашего содержимого файла, вы можете использовать следующий трюк оболочки:
$ 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
Пример того, как справиться с этой проблемой с помощью NodeJS. Санифицируйте значение, заменив \\n
символы на \n
:
process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n')
Взято из: Исключение проблемы с firebase privateKey как переменной конфигурации Heroku