direnvを使ってGo言語のプロジェクトの設定をする
私の所属するチームでは、DBの接続するURLや認証キーなどの秘密情報は環境変数を使って管理しています。
また、Go言語はGOPATHの直下にレポジトリを置くことが多いですが、1レポジトリで複数のサービスをまとめて管理しているためGOPATH以外のパスでレポジトリを管理したいという意見があったので direnv
を使ってみました。
そもそもdirenvとは
ディレクトリごとに環境変数を管理するツールです。 MacならHomebrewを使ってインストールすることができます。
環境変数の設定
以下のように .envrc ファイルを用意すると、.envrcファイルがあるディレクトリ配下では設定した環境変数が自動的に読み込まれます。
$ echo export FOO=foo > .envrc .envrc is not allowed $ direnv allow . direnv: reloading direnv: loading .envrc direnv export: +FOO $ echo ${FOO} foo
一度設定すれば自動反映されるので、開発時に非常に重宝します。
レポジトリのGOPATHを設定
以下を.envrcに追記するとGOPATHを変更することができます。
layout go path_add GOPATH .direnv/go
そのため以下のようなディレクトリ構造にすれば開発者の好きなディレクトリにレポジトリを配置することができます。
project ├── .envrc └── src └── project └── main.go
まとめ
- 環境変数の設定は direnv を使うと自動で読み込まれて便利
- direnv を設定すればGOPATH以外にレポジトリを置きやすい