Comment définir des variables d'environnement lors de l'utilisation de Payjp avec Rails

environnement

macOS Ruby 2.6.5 Rails 6.0.3.2

Aperçu

J'ai utilisé Payjp dans mon application Rails. À ce moment-là, je ne savais pas comment définir les variables d'environnement, je vais donc le garder en mémoire.

Objectif que vous souhaitez atteindre

Être capable de gérer les variables d'environnement via Payjp.

Le problème que vous souhaitez résoudre

Il n'est pas bon pour la sécurité de mettre la clé privée ou la clé publique directement sur le code. Par conséquent, je voudrais gérer les clés privées et les clés publiques à l'aide de variables d'environnement.

Variable d'environnement

La valeur de la variable d'environnement peut être utilisée à partir de Rails en écrivant ENV ['<nom de la variable d'environnement>'].

Environnement local

Si c'est Catalina ou plus tard

Terminal


Nom de l'application% vim ~/.zshrc

Avant Catalina

Terminal


Nom de l'application% vim ~/.bash_profile

Faites ce qui précède dans le terminal.

.zshrc

//Appuyez d'abord sur "i" pour entrer en mode d'entrée
export PAYJP_ACCESS_KEY='sk_test_*************'
export PAYJP_PUBLIC_KEY='pk_test_*************'
//Appuyez ensuite sur la touche esc:avec wq.Quitter zshrc

Nom de l'application% source ~/.zshrc

La commande source est une commande qui exécute la commande écrite dans le fichier dans le shell actuel. Il est principalement utilisé pour refléter le fichier de configuration du shell.

Si vous modifiez simplement les variables d'environnement, les rails liront uniquement les variables d'environnement avant la modification. Par conséquent, si l'application est en cours d'exécution, elle sera fermée une fois. Puis reconnectez-vous avec les rails s à nouveau dans le terminal avec les variables d'environnement modifiées.

Afin de gérer les variables d'environnement définies, écrivez-les dans le contrôleur au format suivant.

creditcards_controller.rb


#Stockage de carte de crédit
  def create
    Payjp.api_key = ENV["PAYJP_PRIVATE_KEY"]
    if params['payjp-token'].blank?
      render :new
    else
      customer = Payjp::Customer.create(
        card: params['payjp-token'],
        metadata: {user_id: current_user.id}
      )
      @card = Creditcard.new(
        user_id: current_user.id,
        customer_id: customer.id,
        card_id: customer.default_card
      )
      if @card.save
        redirect_to root_path, notice: "Carte de crédit enregistrée"
      else
        render :new, notice: "L'enregistrement de la carte de crédit a échoué"
      end
    end

L'exemple de phrase ci-dessus est un processus permettant de tokeniser et de sauvegarder les informations de carte de crédit entrées dans le formulaire.

Environnement de production

En outre, les fichiers dans lesquels les variables d'environnement sont définies diffèrent entre l'environnement local et l'environnement de production.

Terminal


[ec2-user ~]$ sudo vim /etc/environment

/etc/environment

//Appuyez d'abord sur "i" pour entrer en mode d'entrée
PAYJP_ACCESS_KEY='sk_test_*************'
PAYJP_PUBLIC_KEY='pk_test_*************'
//Appuyez ensuite sur la touche esc:avec wq/etc/Sortez de l'environnement
exit
//Connectez-vous à nouveau à ec2 avec ssh

Comme pour l'environnement local, il est nécessaire de redémarrer ou de redéployer unicorn lors de la définition ou de la modification des variables d'environnement.

À la fin

J'espère que cet article vous sera utile.

référence: https://wa3.i-3-i.info/word11788.html https://qiita.com/Richelieu/items/b872dfce81124084b199#%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80 https://qiita.com/suzy1031/items/7964829086eb929471a6

Recommended Posts

Comment définir des variables d'environnement lors de l'utilisation de Payjp avec Rails
Comment définir et décrire des variables d'environnement à l'aide de Rails zsh
Comment créer un environnement Rails 6 avec Docker
[Rails] Comment créer un environnement avec Docker
Comment générer automatiquement un diagramme ER lors de la migration avec Rails 6
Comment spécifier la base de données lors de la création d'une application avec des rails
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Comment installer Pry après avoir créé un environnement de développement Rails avec Docker
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
[Rails 5] Comment afficher l'écran de changement de mot de passe lors de l'utilisation de l'appareil
[Rails] Comment télécharger des images à l'aide de Carrierwave
Comment résoudre les erreurs qui se produisent lors de l'installation de Rails 5.1.3
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment utiliser les variables d'environnement dans RubyOnRails
Pour implémenter la publication d'images à l'aide de rails
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
[Rails] Comment écrire lors de la création d'une sous-requête
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment lier Rails6 Vue (à partir de la construction de l'environnement)
[Rails] Résolution d'erreur lors de la génération de jetons avec PAYJP
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
Comment créer une API avec GraphQL et Rails
Comment créer des variables membres avec le modèle JPA
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment faire en sorte que la chaîne de requête émette réellement lors de l'utilisation de PreparedStatement dans JDBC
Comment rediriger vers http-> https lorsque SSL est activé dans l'environnement Rails × Heroku
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Comment écrire des rails
Comment désinstaller Rails
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
Comment pousser une application développée avec Rails vers Github
Activer ou non SSL lors de l'utilisation de JDBC avec MySQL.
Comment créer un environnement Docker avec Gradle pour IntelliJ
Comment faire un test unitaire avec JVM sur une source à l'aide de RxAndroid
Comment supprimer un objet new_record construit avec Rails
Comment ajouter des caractères à afficher lors de l'utilisation de la méthode link_to
Comment générer manuellement un JWT avec Knock in Rails
[Environnement Docker] Comment gérer ActiveSupport :: MessageEncryptor :: InvalidMessage
[Java] Se référer et définir des variables privées avec réflexion
[Comment insérer une vidéo dans un hameau avec Rails]
[Rails] Comment gérer les modifications d'URL après le rendu
Utilisation de l'API PAY.JP avec Rails ~ Préparation de l'implémentation ~ (payjp.js v2)
Comment créer un environnement de développement Java avec VS Code
Comment interroger Array dans jsonb avec Rails + postgres