データベースの環境変数を管理管理する
どうも皆さんこんにちは!
筆者は現在railsでwebアプリケーションを作成しているのですが、
データベースの環境変数を定義する際に便利に使えるものがないか探していました。
そこで見つけたのが、direnv(GitHub: github.com/direnv/direnv)という環境変数管理ツールです!
今回はdirenvを使って簡単にできる、環境変数定義の紹介をします
前提条件
OS: MacOS, Catalina(バージョン10.15.7)
パッケージインストーラ: Homebrew
バージョン管理: git
direnvのインストール
パッケージインストーラとしてHomebrewを使っているので、
ターミナル(zsh)で以下のコマンドを実行するだけでよいです
brew install direnv
なお、筆者がMacを購入した時には既にzshが標準で設定されていたので、
bashから切り替える必要はありませんでした!
zsh以外のインストール方法については こちら から
hookする
direnvをきちんと使うにはシェルスクリプトとしてhookする必要があるようです。
一度hookを設定してしまえば、シェルを再起動するだけでdirenvが有効化されます!
vimを使って.zshrcファイルを編集します。以下のコマンドを実行します
vi ~/.zshrc
その後、ファイルの最後部に以下のような一文を加え、保存します。
eval "$(direnv hook zsh)"
何をやっているのか
-
eval "$変数名"
: 変数の内容をコマンドとしてシェルに実行させる - シェルスクリプトとしてフックする: コマンドの結果などを取得するための方法(要調査)
#ファイルの編集
config配下の以下のファイルを編集します!
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
touch .envrc
で.envrcファイルを新規で作成し、以下のように編集します。
export DB_USERNAME=ログイン名
export DB_PASSWORD=パスワード
また、以下のコマンドを実行します(実行しないとエラーが出ました)。
direnv allow
ターミナルを再起動し、
作業ディレクトリへ移動した際に以下のようなログが流れれば設定は成功です!
direnv: loading ~/(作業ディレクトリ)/.envrc
direnv: export +DB_PASSWORD +DB_USERNAME
#.gitignoreに.zshrcを追加
このままだと、gitに.zshrcファイルが反映されてしまい
せっかく環境変数を設定しても意味がなくなってしまうので、
.gitignoreファイルに.zshrc
を追加しましょう!
終わりに
最後までご覧いただきありがとうございました。
シェルスクリプトってめちゃ便利なんですね
エイリアスなども簡単に設定できるようなので、
Dockerを使う際にも効率化のために導入してみたいと思ってます!
筆者はシェル初心者なので、誤った記載などあれば指摘くだされば幸いです。
それではまたどこかで!