Многострочные переменные конфигурации в Heroku - PullRequest
44 голосов
/ 04 августа 2011

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

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

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

Ответы [ 6 ]

51 голосов
/ 28 января 2013

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

heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"
9 голосов
/ 12 января 2017

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

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

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

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 для разработки на локальном хосте, файл .envне поддерживает многострочные переменные, поэтому вам нужно экспортировать их в оболочку перед запуском Foreman

6 голосов
/ 08 февраля 2018

Или вы можете просто перейти на вкладку Настройки панели управления Heroku, открыть Config Vars и вставить ее.1009 *

Легко, peasy.

3 голосов
/ 11 августа 2016

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

1 голос
/ 11 декабря 2017

Пример того, как справиться с этой проблемой с помощью NodeJS. Очистите значение, заменив \\n символов на \n:

process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n')

Взято из: Выход из проблемы с firebase privateKey в качестве конфигурационной переменной Heroku

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...