Подтвердить что ты не робот

Многострочные переменные конфигурации в Heroku

У меня есть приложение Rails, которое загружает несколько сертификатов RSA до совершения транзакции с помощью Paypal. На моей машине разработки эти сертификаты читаются из файлов в файловой системе, но поскольку Heroku (который я использую для delpoyment) в основном доступен только для чтения, я не могу загрузить эти файлы, поэтому я предполагаю, что мне придется читать сертификаты из переменных конфигурации (см. Heroku Config Vars).

Поскольку сертификаты состоят из нескольких строк данных, я не уверен, как их устанавливать как переменные или даже если это возможно. Кто-нибудь знает, как я могу это сделать или предложить альтернативный подход?

Большое спасибо, Эдди

4b9b3361

Ответ 1

Я обнаружил, что простой способ добавления многострочных конфигураций состоит в том, чтобы удвоить их, а затем отбросить их из локальной среды

heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"

Ответ 2

Нам нужно было сделать то же самое.

Вы можете обернуть значение переменной в двойные кавычки:

[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

Ответ 3

Мой ответ приходит немного поздно, но у меня была такая же проблема недавно с многострочным 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'])

Ответ 4

Если вы хотите установить значения конфигурации 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