Je suis un débutant en Rails créant un portfolio avec Ruby on Rails. Auparavant, j'ai mis en œuvre une analyse d'image simple à l'aide de l'API Google Cloud Vision dans l'article suivant.
Cependant, ** ne démarre pas bien dans l'environnement de production heroku ... (+ +) ** Je savais que l'authentification ne fonctionnait probablement pas bien, mais cela a pris un temps inattendu pour le réparer, alors je vais le laisser sous forme de mémorandum.
J'utilise git lorsque je mets divers fichiers programme dans heroku.
terminal
git push heroku master
En d'autres termes, il pousse les mêmes informations que github du côté heroku. Comme il est configuré pour ne pas télécharger de fichiers contenant des informations clés sur github (.gitignore), par conséquent, les fichiers contenant des informations clés ne seront pas téléchargés sur heroku. En conséquence, le fichier json avec la clé de compte de service, qui est requise lors de la connexion à l'API Google Cloud Vision, n'a pas été placé du côté heroku.
Cette fois, nous examinerons cette méthode de transmission des informations avec succès.
Ce que nous allons faire cette fois, c'est de le transmettre à heroku en tant que variable d'environnement et de l'appeler à partir de là. Au lieu de placer le fichier lui-même sur le conteneur d'heroku, définissez les informations de clé requises dans une variable.
Accéder à heroku Tout d'abord, accédez à l'écran heroku et sélectionnez l'application que vous souhaitez configurer.
Accéder aux paramètres Cliquez sur l'onglet de l'écran, Paramètres
Cliquez sur Reveal Config Vars Cliquez sur le bouton Reveal Config Vars dans Paramètres
Définissez les variables d'environnement
Lorsque vous appuyez sur le bouton de 3., les variables d'environnement définies s'affichent, donc une nouvelle y apparaît.
Copiez et enregistrez GOOGLE_CREDENTIALS
(toute chaîne de caractères est OK) et tout ce qui se trouve dans le fichier de clé de compte de service.
Redémarrez heroku
Après avoir défini les variables d'environnement, redémarrez avec heroku restart
Nous définirons également le contrôleur en conséquence.
XXXX_controller.rb
:
#Paramètres de l'API Vision
if Rails.env.production?
config.credentials = JSON.parse(ENV.fetch('GOOGLE_CREDENTIALS'))
else
config.credentials = ENV["GOOGLE_APPLICATION_CREDENTIALS"]
end
:
Cette fois, dans le cas de l'environnement de production, obtenez la variable d'environnement définie dans heroku et Modifié pour définir dans la configuration en tant que fichier JSON.
Vous pouvez désormais utiliser l'API Google Cloud Vision sur heroku!
Cela a pris beaucoup de temps malgré le réglage simple ... Vérifiez attentivement le journal de heroku, et si les informations du journal sont insuffisantes, Vous pouvez le voir en définissant les paramètres suivants et en vérifiant les informations détaillées. https://qiita.com/YujiNaito/items/3102ad59124d38433b2e
Aussi, je me demande si c'est la bonne réponse pour le faire avec force à partir de cette variable d'environnement ... Est-ce correct pour la sécurité? Il semble y avoir un meilleur moyen ... Il y a un meilleur moyen que ça! Si vous avez des questions, n'hésitez pas à commenter.
Recommended Posts