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
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"
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
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
ou vous pouvez simplement aller à l'onglet paramètres du tableau de bord Heroku, ouvrir Config var et coller dans.
Simple comme bonjour.
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'])
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