2015-09-02 2 views
2

Как использовать System.get_env («ACCESS_KEY_ID»)Настройка системных переменных в phoenixweb-рамках

У меня есть создать/application.yml конфигурационный файл с содержанием

dev: 
    access_key_id: ABCDEFGHIJKLMN 

Я попытался использовать figaro_elixir и он работает как идеальный вариант, если я проверить его из терминала

когда я бегу

$ MIX_ENV=dev iex -S mix 
iex(1)> System.get_env("ACCESS_KEY_ID") 
"ABCDEFGHIJKLMN" 
iex(2)> 

, но в моей конфигурации/dev.exc

Я не получил ничего

IO.puts System.get_env("ACCESS_KEY_ID") 

Любые предложения? Я бы не хотел раскрывать все свои секретные полномочия.

+0

Im пытается запустить $ MIX_ENV = тестовый набор phoenix.server – Max

ответ

5

Нет необходимости в figaro_elixir. Просто непосредственно доступ к среде в файлах конфигурации:

# config/dev.exs 
config :my_app, :access_key_id, System.get_env("SUPER_SECRET") 

, а затем в коде приложения: Application.get_env(:my_app, :access_key_id). Вы также можете определить конфигурацию выше как просто строку в разработке и использовать переменную окружения только в config/prod.exs.

Другая альтернатива заключается в том, чтобы явно поместить все секреты в файл config/prod.secrets.exs и убедиться, что он не находится в вашем управлении версиями, а только в ваших машинах развертывания.

EDIT: в Эликсире нет никакой системы на основе .yml. Это ненужная сложность. Вы можете делать все и многое другое, используя конфигурационную систему Elixir.

+0

Im пытается запустить $ MIX_ENV = тест phoenix.server смеси на моем локальном хосте: 4000 Где я должен populate System.get_env ("SUPER_SECRET") – Max

+0

Если это для теста, просто используйте его в файле config/test.exs. Если вам нужен фактический токен для теста, вы также можете получить «config/test.secret.exs», который вы импортируете из config/test.exs, но вы не будете проверять его на управление версиями (как это происходит с config/prod .secret.exs). –

0

Я окончательно получил его System.get_env("ACCESS_KEY_ID") является частью моей системы, то есть моего компьютера. Я должен сам туда поместить. для кого-то #slack указал мне на

https://github.com/avdi/dotenv_elixir

+0

Мне не удалось решить эту проблему самостоятельно, используя System.get.env в файле prod.secret.exs. Значения всегда были пустыми на целевом сервере, несмотря на то, что они могли отображать значения из оболочки. Я не понимал, что эти значения решаются на момент создания релиза, а не на время выполнения на целевой машине. Поэтому переменные окружения должны быть доступны на машине сборки. –

Смежные вопросы