2016-01-26 18 views
14

Trong Phoenix Framework, làm thế nào tôi có thể lấy tên của môi trường hiện tại?Lấy tên môi trường hiện tại

Tôi đã thử đọc env biến với System.get_env("MIX_ENV"), nhưng giá trị không phải lúc nào cũng được đặt.

Trả lời

12

Câu trả lời là trong http://elixir-lang.org/docs/stable/mix/Mix.html

iex(1)> Mix.env 
:dev 
+0

này sẽ không làm việc trong mã ứng dụng, trong thời gian chạy, trong quá trình sản xuất. – atomkirk

+0

'Mix' không có sẵn trong ứng dụng sản xuất được biên dịch, vì vậy' Mix.env' bên trong bất kỳ mã nào chạy trong môi trường đó sẽ gây ra lỗi sau: '(UndefinedFunctionError) function undefined Mix.env/0 (module Mix is ​​not available) ' Sẽ tốt hơn nếu bạn sử dụng câu trả lời của Sheharyar. –

16

Mix.env không hoạt động trong sản xuất hoặc môi trường khác mà bạn sử dụng phiên bản biên dịch (được xây dựng sử dụng Exrm/Distillery) hoặc khi Mix không có sẵn.


Giải pháp là để xác định nó trong config/config.exs tập tin của bạn:

# config/config.exs 
config :your_app, env: Mix.env 

Sau đó bạn có thể nhận được các nguyên tử môi trường trong ứng dụng của bạn như thế này:

Application.get_env(:your_app, :env) 
#=> :prod 
Các vấn đề liên quan