2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsでPayjpを使った際の環境変数の設定方法

Last updated at Posted at 2020-11-11

環境

macOS
Ruby 2.6.5
Rails 6.0.3.2

概要

RailsアプリケーションでPayjpを使用しました。
その際に環境変数の設定方法がわからなかったので備忘録として残しておこうと思います。

達成したいゴール

Payjpを通して環境変数の取り扱いができるようになること。

解決したい問題

秘密鍵や公開鍵をコードに直張りするのはセキュリティの都合上よくありません。
そのため、環境変数を用いて秘密鍵と公開鍵を取り扱ってみたいと思います。

環境変数

環境変数は、Railsからは ENV['<環境変数名>'] という記述でその値を利用することができます。

ローカル環境

Catalina以降であれば、

ターミナル
アプリケーション名 % vim ~/.zshrc

Catalina以前であれば、

ターミナル
アプリケーション名 % vim ~/.bash_profile

ターミナルにて上記を実行。

.zshrc
//まず「i」を押して入力モードにします
export PAYJP_ACCESS_KEY='sk_test_*************'
export PAYJP_PUBLIC_KEY='pk_test_*************'
// その後、escキーを押して:wqで.zshrcから抜けます

アプリケーション名 % source ~/.zshrc

sourceコマンドは、ファイルに書かれたコマンドを現在のシェルで実行するというコマンドです。
主にシェルの設定ファイルを反映させる際に使用します。

環境変数を変えただけでは、railsは変更前の環境変数しか読み込みません。
そのため、アプリケーションを起動している場合には一度終了します。
そして、環境変数を修正したターミナルで再度、rails sでログインし直します。

設定した環境変数を扱うためにはコントローラーに下記のような形で記載していきます。

creditcards_controller.rb
# クレジットカードの保存
  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: "クレジットカードが登録されました"
      else
        render :new, notice: "クレジットカードの登録に失敗しました"
      end
    end

上記の例文は、フォームに入力したクレジットカード情報をトークン化して保存するための処理です。

本番環境

また、ローカル環境と本番環境では、環境変数を設置するファイルが異なります。

ターミナル
[ec2-user ~]$ sudo vim /etc/environment
/etc/environment
//まず「i」を押して入力モードにします
PAYJP_ACCESS_KEY='sk_test_*************'
PAYJP_PUBLIC_KEY='pk_test_*************'
// その後、escキーを押して:wqで/etc/environmentから抜けます
exit
// 再度sshでec2にログイン

ローカル環境同様、環境変数を設定・修正した際にはunicornの再起動、もしくは再デプロイが必要となります。

終わりに

この記事が少しでもお役に立てる内容になっている幸いです。

参考:
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

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?