Saltar al contenido

Establecer y cargar variables de entorno en una aplicación phoenix

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)")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *