web-dev-qa-db-ja.com

dotenvを使用してJSONファイルをENV変数に格納することは可能ですか?

RailsアプリケーションでGoogle Drive APIを使用しています。APIは正常に動作しています。次のclient_secret.jsonファイルがあります。

{
  "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"
}

これは私のコントローラーで呼び出されます

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

この構成で問題なく、なんとかAPIを使用できました。ただし、次のようにJSONを.envファイルに保存します。

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"
}" 

このようにコントローラで呼び出します

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

またはこのように

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

しかし、どちらの方法も機能していません。だから私の質問は:「JSONファイルをENV変数に格納することは可能ですか?」

5
Quentin P.

はい。 jsonファイルを変数に格納することが可能です。ただし、必要な小さな変更が1つあります。

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

Jsonの中括弧内のすべての二重引用符に対してこれを行います。

0
gkr2d2