Rails
Crear un proyecto nuevo
Para empezar un projecto nuevo, asegurate de tener instalada la última version de potassium
Luego crea un nuevo proyecto con potassium contestando las preguntas y finalmente corre el script de setup:
Proyecto existente
Si vas a empezar a trabajar en un proyecto Rails que alguien ya creó.
Si necesita agregar funcionalidad a un proyecto existente puedes usar el command install <recipe>
de potassium
Manejo de variables de entorno
Los proyectos siguen el patrón 12 factor para configurar la aplicación en diferentes ambientes sin tener que cambiar el código.
En el caso de nuestro ambiente de desarrollo y testing no queremos tener keys de diferentes proyectos en nuestro ambiente, es por eso que usamos la gema dotenv
para leer y setear variables de ambiente definidas en archivos al cargar nuestro proyecto.
El objetivo es que al clonar la app podamos correr los test y que estos pasen sin tener que configurar nada.
.env.development
: En este archivo pondremos todas las variables que son necesarias para que la aplicación corra. Este archivo estara versionado junto con el proyecto, por lo que nunca pondremos valores sensibles como tokens, API keys, passwords, etc. En cambio podemos poner valores de referencia para que la aplicación pueda partir..env.test
: En este archivo, si es necesario, pondremos las variables que deben ser diferentes en el ambiente de testing..env.local
: En este archivo pondremos todas las variables que tienen valores sensibles y que usaremos en nuestra máquina local para desarrollar. Este archivo esta listado en el.gitignore
, por lo que no será versionado con el proyecto.
¿ ENV[]
o ENV.fetch()
?
ENV[]
o ENV.fetch()
?Podemos usar ENV.fetch()
cuando queremos que la app lance una exception si esa variable no está seteada o si queremos asignar un valor por defecto usando el segundo paramentro.
Nota: En desarrollo el uso de fetch sin un valor por defecto se va a gatillar sólo cuando no hemos agregado ese key al archivo .env.development, esto es un buen recordatorio de esta práctica de documentación. En ambientes de producción no se usa el archivo .env.development por lo que el uso de fetch nos ayudará a encontrar errores por falta de configuracion.
¿ RACK_ENV
o RAILS_ENV
?
RACK_ENV
o RAILS_ENV
?Al crear la aplicación en heroku, se setea la variable RACK_ENV=production
para declarar que usaremos el environment production
de la aplicación. No es necesario usar RAILS_ENV
ya que cuando se llama a Rails.env
este hace fallback a RACK_ENV cuando RAILS_ENV no esta seteado.
Para que esta convención funcione, se debe usar el metodo Rails.env
para chequear el ambiente.
Heroku
En el caso de ambientes deployados en heroku, como staging
y production
estas variables son seteadas usando el CLI de heroku.
Esto hace que los keys seteados esten en el ambiente de heroku, por lo que la app no va a tener problemas al tratar de obtenerlas usando ENV[] o ENV.fetch()
Nota: El environment de deployment es diferente al environment de la aplicación. Para publicaren heroku, siempre usamos el environment production de la aplicacion, ya sea para deployar a staging o production.
Nota: La aplicación en heroku no usará los valores que estan en .env.development
Última actualización