web-dev-qa-db-fra.com

Est-il possible de stocker un fichier JSON dans une variable ENV avec dotenv?

J'utilise l'API Google Drive avec mon application Rails. L'API fonctionne correctement. J'ai le fichier client_secret.json suivant:

{
  "type": "service_account",
  "project_id": "gobirdie-landing-page",
  "private_key_id": "xxxxx",
  "private_key": "-----BEGIN PRIVATE KEY----- xxxxx -----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "xxxxxxxxx",
  "auth_uri": "xxxxxx",
  "token_uri": "xxxxxxx": "xxxxxxxx": "xxxxxxxxx"
}

qui est appelé dans mon contrôleur

@session = GoogleDrive::Session.from_service_account_key("client_secret.json")

Avec cette configuration sans problème, j'arrive à utiliser l'API. Cependant, je voudrais stocker mon JSON dans le fichier .env comme:

CLIENT_SECRET = "{
  "type": "service_account",
  "project_id": "gobirdie-landing-page",
  "private_key_id": "xxxxx",
  "private_key": "-----BEGIN PRIVATE KEY----- xxxxx -----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "xxxxxxxxx",
  "auth_uri": "xxxxxx",
  "token_uri": "xxxxxxx": "xxxxxxxx": "xxxxxxxxx"
}" 

Et appelez-le dans le contrôleur de cette façon

@session = GoogleDrive::Session.from_service_account_key(ENV['CLIENT_SECRET'])

Ou de cette façon

@session = GoogleDrive::Session.from_service_account_key(JSON.parse(ENV['CLIENT_SECRET']))

Mais aucune des méthodes ne fonctionne. Ma question est donc: "Est-il possible de stocker un fichier JSON dans une variable ENV?"

5
Quentin P.

Oui. Il est possible de stocker le fichier json dans une variable. Cependant, un petit changement est nécessaire:

\\\"type\\\": \\\"service_account\\\",

Faites cela pour chaque double citation à l'intérieur des accolades bouclées de json.

0
gkr2d2