Formas de iniciar un proyecto en Rails 6 🚀

Banderas que puedes usar en Rails 6 al momento de crear un proyecto

Natalia Hashimoto
4 min readOct 1, 2019
$ rails -v
Rails 6.0.0

Si estás leyendo este post seguramente ya conoces la forma más básica de crear un proyecto (para este caso un blog 📓):

$ rails new blog

Y también sabes que este comando crea una estructura de carpetas como la siguiente:

Proyecto creado con “rails new”

🔍 Notarás que Rails en su última versión incluye la gema webpacker por defecto, gracias a la presencia de esta gema podemos inicializar proyectos con un framework de javascript sin tener que instalarlo más tarde, usando banderas 🏳️ al momento de generar el mismo. Por ejemplo:

$ rails new blog --webpacker=react

Nos permite crear un proyecto de Rails con la capacidad de agregar componentes y renderizarlos en las vistas como se hace en ReactJS 📝. No solo puedes usar React, existen otras opciones como:

vue
angular
elm
stimulus

Muchas veces usamos Rails para crear API’s en su mayoría 📌. Si quieres crear un proyecto tipo API puedes correr el siguiente comando:

$ rails new blog --api

A diferencia del primero, al usar la bandera --api, Rails va a hacer tres acciones específicas:

✅ Va a configurar la aplicación para ser inicializada con menos especificaciones en su middleware que lo normal. Por ejemplo no va a incluir el soporte de Cookies, que es una característica utilizada por las aplicaciones del navegador.

✅ En el archivo application_controller.rb puedes notar que va a heredar funciones de ActionController::API en vez de ActionController::Base.

Esto quiere decir que va a ignorar cualquier módulo del action controller que brinde funcionalidades utilizadas principalmente por las aplicaciones del navegador.

✅ Al momento de generar nuevos recursos desde la consola, Rails va a evitar crear las vistas, helpers y assets en tu proyecto.

Puedes leer más sobre API con Rails aquí 🚌.

A nivel de gemas 💎, este último comando, va a omitir las gemas que se señalan en rojo en la siguiente imagen y por otro lado va a agregar una como opcional para poder usarla más adelante si se necesita (rack-cors):

Gemas en rojo a la izquierda son las que ignora, gemas en verde a la derecha son las que deja como opcionales.

En el archivo de application.rb puedes notar que aparece una línea de código dónde se especifica que este proyecto es un API 🔥:

config.api_only = true

📕 📗 Rails usa sqlite3 como base de datos por defecto, pero tú puedes cambiar este motor por el de tu preferencia así 📘 📙:

$ rails new blog --api --database=mysql

Si no quieres usar MySQL tampoco, Rails soporta las siguientes opciones (además de las dos anteriormente mencionadas):

postgresql
oracle
frontbase
ibm_db
sqlserver
jdbcmysql
jdbcsqlite3
jdbcpostgresql
jdbc

Lo único que debes tener en cuenta es que para usar estos comandos debes tener el motor instalado en tu computador, de lo contrario la instalación de la gema podría generarte un error 🌪.

🌡 Otra forma de iniciar una app en Rails, es teniendo en cuenta con qué vas a testear tu proyecto 💉. Rails al iniciarse como un API, instala minitest por defecto, pero si tú quieres que ignore esto para instalar tu gema favorita, debes hacerlo así:

$ rails new blog --api -T

La bandera -T va a omitir la instalación o creación de carpetas de todo lo que tenga que ver con test unitarios, dejandote todo listo para la instalación de otras gemas, por ejemplo: RSpec . Vas a notar que en las carpetas de tu proyecto no va a existir la carpeta con el nombre test.

En este caso para instalar nuestra nueva gema para hacer TDD puedes agregar en el archivo Gemfile lo siguiente:

group :development, :test do
gem 'rspec-rails'
end

Una vez agregada la gema podemos correr el comando bundle install y finalmente rails generate rspec:install en tu consola, para generar la estructura de RSpec en nuestro proyecto.

👉🏼 Existen muchas más opciones de configurar tu proyecto para agregar u omitir carpetas, gemas, etc. Para conocerlas todas puedes usar el siguiente comando:

$ rails new -h

Así obtendras un listado de banderas con su respectiva explicación y puedes ir jugando con ellas para tener en cuenta las opciones que tienes en la creación de cada proyecto 🖥.

--

--