Solución:
He encontrado otro ejemplo
1.- Crea un archivo .env
en tu carpeta principal
2.- Agrega las variables env en el .env
expediente
# Example:
# MyApp/.env file
export GITHUB_CLIENT_ID="testID"
export GITHUB_SECRET_CLIENT_ID="testSecretID"
3.- Ejecutar source .env
y cada vez que se modifique, ejecute el comando nuevamente, tal vez en el reinicio también
4.- Que es realmente importante – no olvide agregar sus archivos secretos a MyApp/.gitignore
# add this at the end
/.env
5.- Ejecuta el servidor phoenix mix phx.server
o mix phoenix.server
Puedes probarlo con
iex -S mix phoenix.server
iex> System.get_env("GITHUB_CLIENT_ID")
"testID"
Enlaces de ayuda:
Error de variable de entorno
Documentación de config
Hay dos problemas principales con lo que está tratando de hacer:
En primer lugar, está tratando de instruir mix
para configurar oauth
Aplicación OTP, mientras que lo que necesitas es configurar la tuya propia:
config :my_app, :oauth,
github_client_id: "(CLIENT ID)",
github_client_secret: "(SECRET)"
Ahora, en su configuración principal, puede hacer:
config :ueberauth, Ueberauth.Strategy.Github.OAuth,
client_id: Application.get_env(:my_app, :oauth)[:github_client_id],
client_secret: Application.get_env(:my_app, :oauth)[:github_client_secret]
La segunda falla es que GITHUB_CLIENT_ID
es un átomo y últimamente estás intentando acceder a él como una cadena. En general, no se deben usar nombres de átomos que comiencen con mayúsculas, ya que están reservados para nombres de módulos.
Por otro lado, aún puede usar System.get_env/2
(con tu config.ex
,) asumiendo que los valores fueron previamente poner allí en el medio ambiente:
prod.secret.exs
(ya que todavía es simple Elixir)
System.put_env("GITHUB_CLIENT_ID", "(CLIENT ID)")
System.put_env("GITHUB_CLIENT_SECRET", "(CLIENT SECRET)")