Variables de configuration multi-lignes dans Heroku

j'ai une application Rail qui charge un certain nombre de certificats RSA avant qu'une transaction soit faite avec Paypal. Sur ma machine de développement, ces certificats sont lus à partir de fichiers du système de fichiers, mais comme Heroku (que j'utilise pour delpoyment) est en grande partie en lecture seule, Je ne peux pas télécharger ces fichiers, donc je suppose que je vais devoir lire les certificats des variables de configuration (voir Heroku Config Vars ).

Parce que les certificats comportent plusieurs lignes de données, Je ne sais pas comment les Définir comme variables ou même si c'est possible. Personne ne sait comment je pourrais faire ceci ou être en mesure de proposer une autre approche?

Merci beaucoup, Eddie

39
demandé sur Eddie Johnston 2011-08-04 17:49:46

6 réponses

j'ai trouvé qu'un moyen facile d'ajouter des configs multi-lignes est de les citer deux fois et ensuite de les faire écho à partir de mon environnement local

heroku config:add EC2_PRIVATE_KEY="$EC2_PRIVATE_KEY"
49
répondu danmayer 2013-01-27 20:53:47

nous avions besoin de faire la même chose.

vous pouvez envelopper la valeur variable dans des guillemets doubles:

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 vous utilisez Foreman pour le développement de localhost, le.le fichier env ne supporte pas les variables multi-lignes, vous devrez donc l'exporter vers le shell avant de lancer Foreman

9
répondu daveespo 2012-06-20 15:00:49

si vous voulez définir les valeurs de configuration Heroku à partir du contenu de votre fichier, vous pouvez utiliser l'astuce suivante:

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

les valeurs multilignes peuvent être définies directement en mettant des guillemets autour de la valeur:

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

si vous utilisez Foreman pour exécuter localement (maintenant heroku local ), il ne supporte pas les variables multi-lignes. Vous devez utiliser quelque chose pour les injecter dans l'environnement d'abord, comme envdir :

$ envdir my-env-dir heroku local
6
répondu Judy2K 2017-01-12 12:03:22

ou vous pouvez simplement aller à l'onglet paramètres du tableau de bord Heroku, ouvrir Config var et coller dans.

Heroku Settings

Simple comme bonjour.

5
répondu James Gentes 2018-07-26 02:20:16

Ma réponse vient un peu tard mais j'ai eu le même problème récemment avec multi-ligne com. variables sur Heroku. Ma solution était d'utiliser strict_encode64 :

encoded_secret = Base64.strict_encode64("my_multi_line_secret")

ajouter la clé:

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

dans le code, vous le décodez en utilisant Base64.strict_decode64(ENV['SECRET_KEY'])

3
répondu paulld 2016-08-11 02:55:00

un exemple de la façon de traiter ce problème en utilisant NodeJS. Assainir la valeur en remplaçant \n par \n :

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

tiré de: s'Échappant d'un problème avec firebase privateKey comme Heroku variable de config

1
répondu Eugene Kulabuhov 2017-12-10 22:42:08