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.
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.
Câu trả lời là trong http://elixir-lang.org/docs/stable/mix/Mix.html
iex(1)> Mix.env
:dev
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
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
'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. –