LoginSignup
4

More than 3 years have passed since last update.

Rails5.2以降でのcredentials.yml.encの読み込み方

Posted at

PAYJPのAPIが読み込めず、クレジットカードの登録ができない

PAYJPを使ってクレジット決済の導入をしたところ、
クレジットカードの登録をしようとすると下記のようなエラーがでました

スクリーンショット 2020-04-04 21.15.33.png

PAYJPの導入はQiita記事参照してください
RailsでPayjpを使った購入機能を実装する

PAYJPと連携するためのキーが読み込めていない

Rails5.2以降からはAPIのキーなど環境変数に設定するためのものは
credentilas.yml.encに記載するようになりました

詳しくはこちら
Rails5.2から追加された credentials.yml.enc のキホン

こちらを参照にcredentials.yml.encに記載したはず・・・
もしかしてちゃんと読み込めていなそう?

rails cで調べてみる

ターミナル
rails c
[1] pry(main)> Rails.application.credentials.PAYJP_PRIVATE_KEY
=> "sk_test_XXXXXXXXXXXXXXXXXXXX"

どうやらちゃんと読み込めるのでちゃんと環境変数は設定できていそう

credentials.yml.encを読み込む書き方が必要

どうやら他の参考記事の通りに

card_controller.rb
  def pay
    Payjp.api_key = ENV["PAYJP_PRIVATE_KEY"]
    中略

と書いてしまっていたのが原因。
ENV["PAYJP_PRIVATE_KEY"]で読み込んでいたのはcredentials.yml.encを使っていないRails.5.2以前の書き方で、credentials.yml.encを読み込むためには

card_controller.rb
  def pay
     Rails.application.credentials.dig(:payjp, :PAYJP_PRIVATE_KEY)
    中略

と書かないとcredentials.yml.encに記載した環境変数の読み込みができないということです。
記事によってRailsのバージョンが違うので安易にそのまま記載するのはいけないですね。。。。

参考

【Rails】payjpを使用した決済機能を実装する①〜クレジットカードの登録編〜

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
4