以下の内容はhttps://ama-tech.hatenablog.com/rails-credentials-commandより取得しました。


【Rails】bin/rails credentialsコマンドの使い方

Railsのcredentialsコマンドを使用すると、アプリケーションの認証情報(APIキー、データベースのパスワードなど)を安全に管理できます。

認証情報は暗号化され、config/credentials.yml.encに保存されるため、環境変数を多用せずに機密情報を扱えます。

credentialsコマンドには以下の3つのコマンドが用意されています。

  • bin/rails credentials:edit:認証情報を編集
  • bin/rails credentials:show:認証情報の内容を復号化して表示
  • bin/rails credentials:diff:Gitを用いた差分管理の設定と確認

また、-e <environment>オプションを指定することで、環境ごと(例:production, development, test)に異なる認証情報を管理できます。

credentialsコマンドの詳細はbin/rails credentials:helpで確認できます。

本記事では、これらのコマンドの使い方について解説します。

  • 実行環境
    • Ruby 3.4.1
    • Rails 8.0.1
    • VSCode 1.97.2
    • MacBook Pro (13-inch, 2020)
    • macOS Sequoia 15.3

1. bin/rails credentials:edit

EDITOR="code --wait" bin/rails credentials:edit

以下のように環境変数を定義しておけば、EDITOR="code --wait"を指定せずに実行できるようになります。

echo 'export EDITOR="code --wait"' >> ~/.zshrc

1-1. 環境ごとに認証情報を管理する

-eオプションで環境ごとにcredentialsを管理できます。

# production環境の場合
bin/rails credentials:edit -e production
  • config/credentials/#{environment}.yml.encconfig/credentials/#{environment}.keyが作成される
  • .gitignore/config/credentials/#{environment}.keyが追加される

2. bin/rails credentials:show

bin/rails credentials:show
  • 復号化されたconfig/credentials.yml.encの内容が表示される
    • bin/rails credentials:diff config/credentials.yml.encと同じ
  • -e <environment>で環境ごとに指定可能

3. bin/rails credentials:diff

bin/rails credentials:diff config/credentials.yml.enc
  • 復号化されたconfig/credentials.yml.encの内容が表示される
    • bin/rails credentials:showと同じ
  • -e <environment>で環境ごとに指定可能

3-1. git diffでcredentialsの差分を確認する

bin/rails credentials:diff --enroll
  • git diff実行時にbin/rails credentials:diffを呼び出すようになる(復号化された内容が表示される)

--enrollオプションにより.gitattributesに以下が追記されます。

# .gitattributes
config/credentials/*.yml.enc diff=rails_credentials
config/credentials.yml.enc diff=rails_credentials

これにより全てのcredentialsファイルに対してrails_credentials diff driver(=bin/rails credentials:diff)が適用されます。

bin/rails credentials:editコマンド実行時にdiff driverが設定されているかを確認し、設定がない場合は.git/configに以下が追記されます。

# .git/config
[diff "rails_credentials"]
    textconv = bin/rails credentials:diff

これらの設定を無効にするには--disenrollオプションを指定します。

# git diff実行時に暗号化された内容が表示されるようになる
bin/rails credentials:diff --disenroll

【参考】




以上の内容はhttps://ama-tech.hatenablog.com/rails-credentials-commandより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14