mixで生成したElixir/Phoenixアプリケーションは、デフォルトで3種類の環境に対応しています。
- :dev - デフォルト
- :test - テスト用
- :prod - 本番用
基本的にはこの3種類の設定だけでも問題無いのですが、「開発中のアプリケーションの動作を開発サーバー上で複数人で確認したい」という場合に、「ローカル環境」と「開発サーバー環境」を自動的に区別出来ると便利な場合があります。
このようなケースの場合、(Mac限定になりますが)下記のような方法で対応可能です。
方法
# config/config.exs
# use Mix.Configの下に下記のコードを追加
{_, osname} = :os.type()
if osname == :darwin && Mix.env == :dev do
Mix.env(:local)
System.put_env("MIX_ENV", Atom.to_string(Mix.env))
end
# config/local.exs
use Mix.Config
# 〜ローカル環境用の設定を記述〜
# mix.exs
defp deps do
# 下記のように変更
{:phoenix_live_reload, "~> 1.0", only: [:local, :dev]},
end
確認
Macでiex -S mix phoenix.server
でPhoenixを起動し、環境として:localが自動設定されていることを確認してみてください。
iex> Mix.env
:local
iex> System.get_env("MIX_ENV")
"local"
Mac以外の環境で実行された場合は、環境として:devが自動設定されます。