はじめに
今回はAPIキーを含む秘匿情報の管理方法について。様々な記事を参考にしたりGPTで質問したりすることで、言ってることは分かるけど実際にやってみると本当にあってるのかが不安になり、余計なことをしたり、でだいぶ時間がかかってしまいました。
なので次回はさっと進めることができるようにするためにも記事にまとめてみたいと思います。
環境
- Windows, WSL
- Docker
- Ruby 3.2.3
- Rails 7.1.3
先に正解?から
私がつまずいた部分については後回しで先に秘匿情報をどうやって管理することができたのかについて。
- docker環境、rails、Vscode使用
- credentials.yml.encで管理することを選びました
- ローカルでの構築段階です
コンテナに入る
$ docker exec コンテナ名 /bin/bash
vimでconfig/credentials.yml.encファイルを開く
# EDITOR="vim" bin/rails credentials:edit
- 編集をするために「i」を入力
- 『 ----挿入(INSERT)---- 』と表示されるので、入力が可能となる(インサートモード)
- 先頭の行当たりをクリックして選択しておき以下入力
google:
google_client_id: 取得したclient_id
google_client_secret: 取得したclient_secret
- 保存するときは、『 esc 』キーを押してから、『 :wq 』を押して保存。で終了
config/initializers/sorcery.rbで環境変数を設定する
config.google.key = Rails.application.credentials.dig(:google, :google_client_id)
config.google.secret = Rails.application.credentials.dig(:google, :google_client_secret)
config.google.callback_url = Settings.sorcery[:google_callback_url]
config.google.callback_url = "http://localhost:3000/oauth/callback?provider=google"
config.google.user_info_mapping = { email: 'email', name: 'name' }
- config配下のファイルをいじった後は必ずサーバーを立ち上げ直してください!!
参考記事+後のもろもろの設定について
- API設定については下記記事を参考にしました
※注意としては「認証済みのリダイレクトURL」はhttp://localhost:3000/oauth/callback?provider=google
で。
私の間違い
ここからは興味のある方だけ。「何をそんなに迷ったの?」かについて。
- APIの設定が完了したら、生成されたclient ID, client secretをcredentials.ymlに追加する時
EDITOR="vim" bin/rails credentials:edit
- 上記コードを入力するもターミナルでそもそも実行していたためうまくいかない
Your Ruby version is 3.0.2, but your Gemfile specified 3.2.3
ターミナルで実行したから上記のようなログになる
Rubyのバージョンを切り替えようとする
ruby-build のアップデートやrbenのインストール等いろいろ試す
1:GPTにききコンテナ内で次のコマンドを実行するもエディタが開かない
# rails credentials:edit
2:nano、vim、code(VS Code)などエディタを環境変数として設定してみる
# export EDITOR="code --wait"
3:再度1のコマンドを実行するもやはりうまくいかない
- そして人に助けを求め、翌日リフレッシュした頭で挑んだら解決しました。以上です。
- ついでに、助けを求める前に
EDITOR="vim" bin/rails credentials:edit
をコンテナ内で実行してファイルの中に入れてはいましたが、操作方法がよくわかっていなくてvimから何とかして出るだけで手いっぱいでした💦
さいごに
私のような?の行動をする人は多分いないかと思いますが、落ち着けばみんなできます。今回の記事が何か参考になれば幸いです。