【RubyMine】direnvの環境変数を読み込む方法(EnvFile)

こんにちは🦆
マネーフォワードの福岡拠点でクラウド債務支払クラウド経費の開発を担当している、いいねです。

前回のRubyMineに開発用コマンドを登録してチームで共有しように続いてRubyMineのTipsです。

direnvで管理している環境変数をRubyMineで使いたい

プロジェクトの環境変数をdirenvで管理していると、アプリケーションの起動やユニットテストを行う際にdirenvの環境変数が必要になることがあります。
RubyMine上でこれらの実行構成を実行すると、RubyMineにはdirenvの設定ファイルである.envrcを環境変数として読み込む機能がなく、環境変数不足でエラーとなってしまいます。

JetBrains MarketplaceのdirenvプラグインはいずれもRubyMine非対応です。
環境変数を反映したCLIからRubyMineを起動することで環境変数を反映させるという方法があるのですが、
毎回CLIからRubyMineを起動するのが面倒ですし、アプリケーションアイコンからの起動を諦めないといけません。
direnvとRubyMineを組み合わせて使用する為にはこのような課題があります。

今回、direnvとRubyMineを組み合わせて使用する為の解決策を一つ見つけたのでご紹介いたします。

direnvの環境変数を.envにして読み込ませる

プラグイン EnvFile を使用して、RubyMineで実行する実行構成にdirenvの環境変数を読み込ませる方法をご紹介いたします。
以下の設定を行うことで、direnvの環境変数を.envファイルとして出力して実行構成に登録することができます。

1. direnvを反映した環境変数を.envファイルに出力させるための実行構成を作る

[Run/Debug Congfigrations]にて、Shell Scriptのテンプレートを用いてこのような実行構成を作成します。
今回は以下のスクリプトで実行構成を作成しました。

direnv exec /任意の.envrcのパス printenv > .idea/.env

Linuxコマンドのprintenvを使って.envファイルを作成するスクリプトです。
direnv execすることで.envrcに書かれた環境変数を読み込んだ上でprintenvを実行することができます。

⚠︎ 注意

この方法で作成する.envファイルにはdirenv以外の環境変数も一緒に出力されます。
.envファイルの取り扱いには注意してください。
.gitignoreに追加することをオススメします。

2. スクリプト実行時に.envを環境変数として読み込ませる

次に、EnvFileを設定していきます。
まずは [Preferences] > [Plugins]EnvFile を検索してインストールします。


EnvFileをインストールしたら、[Run/Debug Configrations]を開きます。

EnvFile 設定欄が追加されているので、
環境変数を読み込ませたい実行構成の Enable EnvFile にチェックを入れ、
手順1の実行構成で指定した.envのパスを設定しましょう。


併せて、.envrc の内容の変更に対応できるように、
[Before launch] を設定して、.envを読み込む前に最新化してもらいましょう。

[Before launch] > [+] > [Run Another Condfigration]にて、手順1で作成した実行構成を指定します。



ここまで設定を行ったら完了です。
起動構成を選択して実行すると環境変数が.envファイルに出力されてRubyMineに読み込まれます。
おつかれさまでした。


一つ一つの実行構成にEnvFileの設定をするのが面倒な場合は、
[Run/Debug Congfigrations] > [Edit configulaton templates...] にて、テンプレート単位の設定をしましょう。
自分はRSpecのテンプレートに設定しています。

最後に

今回ご紹介した方法で、direnvを意識することなくRubyMineを利用できるようになります。

EnvFileプラグインはPyCharm, IntelliJ IDEA, GoLand, Cursiveにも対応しています。
RubyMine以外のそれらのIDEを使用する際にもこの方法が使用できます。


マネーフォワード福岡拠点ではエンジニアを募集しています!
株式会社マネーフォワード 福岡 の求人一覧

福岡開発拠点のサイトもありますので、ぜひご覧ください!
マネーフォワード 福岡開発拠点


マネーフォワードでは、エンジニアを募集しています。
ご応募お待ちしています。

【会社情報】
Wantedly
株式会社マネーフォワード
福岡開発拠点
関西開発拠点(大阪/京都)

【SNS】
マネーフォワード公式note
Twitter – 【公式】マネーフォワード
Twitter – Money Forward Developers
connpass – マネーフォワード
YouTube – Money Forward Developers

Pocket