Rails te da la posibilidad de crear un prototipo funcional de un proyecto y publicarlo
en internet en sólo un par de horas.
Con sólo un par de líneas puedes tener una mini aplicación funcionando ya que
cuenta con un conjunto de herramientas que permiten crear aplicaciones
complejas y escalables a niveles enterprise con equipos de programación
relativamente pequeños.
Initial Setup
Crear una nueva aplicación se logra con tan sólo una instrucción en la terminal:
rails new APP_NAME –-database=postgresql && cd APP_NAME
Con la finalidad de poder hacer el deploy a Heroku, utilizamos la database PostgreSQL. Si decides utilizar SQL, los aspectos técnicos dentro de Rails no representan ningún cambio salvo por el archivo database.yml.
Una vez dentro del directorio de nuestra aplicación recién creada, siempre deberás correr el comando bundle para instalar las gemas (librerías) de la aplicación:
bundle install
En este punto estamos casi listos para correr por primera vez nuestra aplicación, pero antes debemos crear la base de datos que vamos a usar durante el desarrollo de nuestra aplicación en Rails. Primero tenemos que editar nuestro archivo de database, que encuentras en config > database.yml para indicarle a Postgres el user, password, el nombre de las bases de datos que vamos a requerir así como el host donde va a alojarse nuestra base de datos.
Primero estamos definiendo los valores por defecto. Esta configuración es general para todos los ambientes.
Después tendremos que configurar por separado las bases de datos de los diferentes ambientes que estaremos manejando dentro de Rails. Recuerda que Rails ya cuenta con un manejo de tests, así que también incluiremos la configuración para nuestra base de datos del ambiente Test.
Podemos ver que las configuraciones de Test y Development son muy similares, salvo por el nombre de la base de datos que se creará para su respectivo ambiente. Es recomendable hacer la distinción de los nombres con una nomenclatura similar para poder diferenciar fácilmente entre una y otra.
Por último configuramos la base de datos para el ambiente de producción:
En esta configuración estamos definiendo con una variable de entorno la contraseña de nuestra aplicación. Esta variable deberá vivir en un archivo con extensión ENV y deberás definirla de la siguiente manera:
PLATZIBLOG_DATABASE_PASSWORD=mipassword
El archivo ENV ya viene excluido de nuestro repositorio gracias a Rails 5, así que no te preocupes al hacer push a tu repositorio pues tus variables de entorno no quedarán expuestas.
Y ahora sí, una vez definiendo la información que Rails necesita para saber a qué base de datos se va a conectar, quién se conecta (user y password) y a través de qué adaptador (postgres), ya podemos correr el comando para crear las bases de datos:
rake db:setup
Este comando no solamente crea nuestra base de datos, también configura las conexiones necesarias para empezar a armar el esquema de nuestra base de datos cada que corramos:
rake db:migrate
Iniciaremos nuestro servidor para empezar el desarrollo con el comando:
rails s
TIP: Para conocer todos los comandos que puedes correr para una aplicación en Ruby on Rails, si escribes “rails” tendrás un detalle completo de los comandos y sus abreviaciones.
Esta es la lista completa de comandos que verás al finalizar el curso. Estos comandos se estarán actualizando cada vez que instalemos alguna gema que contenga comandos propios para configurar dentro de nuestra aplicación.
The most common rails commands are: generate Generatenewcode(short-cut alias:"g") console Start the Railsconsole(short-cut alias:"c") server Start the Railsserver(short-cut alias:"s") test Run tests except system tests(short-cut alias:"t")test:system Run system tests
dbconsole Start a console for the database specified in config/database.yml(short-cut alias:"db")newCreate a newRails application."rails new my_app" creates a
newapplication called MyAppin"./my_app"All commands can be run with-h(or --help)for more information.In addition to those commands, there are:Rails: console
credentials:edit
credentials:show
dbconsole
destroy
encrypted:edit
encrypted:show
generate
newrunnersecrets:edit
secrets:setup
secrets:show
server
test
version
Rake: about
active_storage:install
app:template
app:update
assets:clean[keep]assets:clobber
assets:environment
assets:precompile
autoprefixer:info
cache_digests:dependencies
cache_digests:nested_dependencies
ckeditor:nondigest
db:create
db:drop
db:environment:setdb:fixtures:load
db:migrate
db:migrate:status
db:rollback
db:schema:cache:clear
db:schema:cache:dump
db:schema:dump
db:schema:load
db:seed
db:setup
db:structure:dump
db:structure:load
db:version
dev:cache
initializers
log:clear
middleware
notes
notes:custom
paperclip:clean
paperclip:find_broken_attachments
paperclip:refresh
paperclip:refresh:metadata
paperclip:refresh:missing_styles
paperclip:refresh:thumbnails
restart
routes
secret
stats
test
test:db
test:system
time:zones[country_or_offset]tmp:clear
tmp:create
yarn:install
Creo que la secuencia de las lecciones esta cruzada en algunos ítems!! Alguien más percibe el mismo inconveniente?
si, he notado lo mismo
Hola qué lecciones percibes "cruzadas"? :)
Para inicializar la base de datos generalmente ejecuto rails db:create y seguido rails db:migrate hay alguna diferencia entre create y setup??
El archivo ENV ya viene excluido de nuestro repositorio gracias a Rails 5
En el .gitignore no me aparece ningun archivo ENV, donde esta ese archivo ENV??
Una variable de entorno es una serie de valores que normalmente es configurado en el sistema operativo y solo es accesible desde la memoria del S.O.
Al parecer hay diferentes formas de crear una variable de entorno, pero por lo general tiene estas etapas
crear un archivo que contenga las mismas
ejecutamos el archivo en nuestro entorno actual
Finalmente configuramos nuestra aplicación para que las utilice
Ejemplo en Ruby (Rails) -> Me atrevería a decir que es un archivo YML y por ello Rails lo ignora automáticamente
“Esta variable deberá vivir en un archivo con extensión ENV” - - Al parecer en esta guía dice «o yo lo entiendo como» que si guardas la variable en un archivo “.ENV” Rails no ignora por defecto.
Rails 5.2 utiliza un metodo de encriptacion en unos archivos específicos “config/credentials.yml.enc” y “config/master.key” este ultimo esta declarado en .gitignore mediante estos archivos se pueden integrar variables, claves, tokens etc… de forma segura. Un ejemplo:
Conceptos extraídos de:
rails db:create crea la base de datos.
rails db:setup crea la base de datos, lo inicializa y utiliza los datos del seed database
Tengo una pregunta que pasa si despues de tener un sistema en funcionamiento deseo agregar un campo a un modelo, que debo hacer? Supongo que ya no aplica dbcreate
puedes generar migraciones para agregar el valor del campo que quieras, ejemplo: rails generate migration AddImageUrlToBooks image_url
Esto te creara un archivo de migraciones nuevo para agregar/modificar cualquier campo en este caso creará para el modelo Books el campo image_url
Guia: creando-una-migracion
rails g migration es para generar una migración.
AddNombreDelCampoToNombreDelModelo
Esto te generará un archivo en migration y lo corres utilizando rails db:migrate y los cambios se verán reflejado en el modelo y la base de datos
Iba todo bien pero ese tutorial me confundió y no me corre la aplicacion :S
que error tienes?
Alguien me puede compartir el repositorio de lo que se a hecho. Tengo un problema y no he podido solucionarlo.
Caused by:PG::UndefinedTable:ERROR: relation "users" does not exist