configuration - variable - heroku environment vars
Variables de configuración de múltiples líneas en Heroku (6)
Tengo una aplicación Rails que carga una cantidad de certificados RSA antes de que se realice una transacción con Paypal. En mi máquina de desarrollo, estos certificados se leen de los archivos en el sistema de archivos, pero debido a que Heroku (que estoy utilizando para el despoblamiento) es principalmente de solo lectura, no puedo cargar estos archivos, así que supongo que tendré que lee los certificados de las variables de configuración (ver Heroku Config Vars ).
Debido a que los certificados constan de múltiples líneas de datos, no estoy seguro de cómo configurarlos como variables o incluso si esto es posible. ¿Alguien sabe cómo podría hacer esto o ser capaz de sugerir un enfoque alternativo?
Muchas gracias, Eddie
Descubrí que una manera fácil de agregar configuraciones de múltiples líneas es doblarlas y luego repetirlas desde mi entorno local
heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"
Mi respuesta llega un poco tarde, pero tuve el mismo problema recientemente con env de múltiples líneas. variables en Heroku. Mi solución fue usar strict_encode64
:
encoded_secret = Base64.strict_encode64("my_multi_line_secret")
agregar la clave:
$ heroku config:set SECRET_KEY=''the encoded_secret string here''
En el código, luego Base64.strict_decode64(ENV[''SECRET_KEY''])
usando Base64.strict_decode64(ENV[''SECRET_KEY''])
Necesitábamos hacer lo mismo.
Puede ajustar el valor de la variable entre comillas dobles:
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$
Si está utilizando Foreman para el desarrollo de localhost, el archivo .env no admite variables de varias líneas, por lo que deberá exportarlo al shell antes de iniciar Foreman
Si desea establecer valores de configuración de Heroku a partir del contenido de su archivo, puede usar el siguiente truco de shell:
$ heroku config:set SECRET_KEY="$(cat path/to/secret.key)"
Los valores de líneas múltiples se pueden establecer directamente poniendo comillas alrededor del valor:
$ heroku config:set SECRET_KEY=''first line
> second line''
Si está utilizando Foreman para ejecutar localmente (ahora heroku local
), no admite variables de varias líneas. Debe usar algo para inyectarlos primero en el entorno, como envdir :
$ envdir my-env-dir heroku local
Un ejemplo de cómo lidiar con este problema usando NodeJS. Desinfecte el valor reemplazando //n
caracteres con /n
:
process.env.FIREBASE_PRIVATE_KEY.replace(///n/g, ''/n'')
Tomado de: Problema de escape con firebase privateKey como una variable de configuración de Heroku