480 words
2 minutes
2.12 Parte 1 Creación Del Proyecto “depot” Con Rails Y Tailwindcss

En esta práctica se inició la creación del proyecto Depot utilizando Ruby on Rails, integrando TailwindCSS como framework visual y Active Storage para la gestión de imágenes.


1. Creación del proyecto#

Se inicia el proyecto con:

Terminal window
rails new depot
cd depot

Este comando genera toda la estructura base del proyecto, incluyendo soporte para JavaScript, CSS y los microframeworks necesarios para el desarrollo web.

También puede iniciarse directamente con TailwindCSS:

Terminal window
rails new depot --css tailwind

2. Generación del modelo y Scaffold#

Se genera el modelo Product con sus campos:

Terminal window
bin/rails generate scaffold Product \
title:string description:text image:attachment price:decimal

Esto crea automáticamente el modelo, el controlador, las vistas y la migración inicial.

En el archivo db/migrate/2025xxxx_create_products.rb, se ajusta la precisión de los precios:

t.decimal :price, precision: 8, scale: 2

Esta configuración define que el precio tendrá hasta 8 dígitos en total, con 2 decimales.


3. Configuración del almacenamiento de imágenes#

Para manejar archivos adjuntos (como imágenes), se instala Active Storage:

Terminal window
bin/rails active_storage:install
bin/rails db:migrate

Esto crea las tablas necesarias para guardar referencias a los archivos.

También se incluye en el controlador principal:

include ActiveStorage::SetCurrent

Esto permite a Rails mantener una sesión activa de almacenamiento para cada usuario.


4. Integración de TailwindCSS y vistas#

Para que TailwindCSS funcione en tiempo real:

Terminal window
bin/rails tailwindcss:watch
CTRl + C
bin/rails server

En la vista del formulario (form.html.erb), se aplican clases dinámicas para los campos y validaciones visuales:

<div class="my-5">
<%= form.label :description %>
<%= form.text_area :description, rows: 10, class:
["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full",
{"border-gray-400 focus:outline-blue-600":
product.errors[:description].none?,
"border-red-400 focus:outline-red-600":
product.errors[:description].any?}] %>
</div>
<div class="my-5">
<%= form.label :image %>
<%= form.file_field :image, accept: "image/*", class:
["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full",
{"border-gray-400 focus:outline-blue-600": product.errors[:image].none?,
"border-red-400 focus:outline-red-600": product.errors[:image].any?}] %>
</div>

Tailwind permite crear interfaces limpias y responsivas sin escribir CSS manual.


5. Carga de datos con Seeds#

Para añadir productos de prueba en la base de datos se usa seeds.rb:

Terminal window
mkdir images
cp ../../../Downloads/code/rails80/depot_a/db/images/*.jpg .
bin/rails db:seed

Esto permite insertar registros iniciales en la base de datos. Usando DB Browser for SQLite, pueden visualizarse los productos cargados.


6. Renderizado y actualización automática#

Rails maneja HTML5 de forma transparente: cuando un producto cambia, la lista se actualiza automáticamente en la vista index.html.erb.

Gracias a la integración de Active Storage y Tailwind, las imágenes y estilos se actualizan de forma sincronizada, mejorando la presentación y consistencia del sistema.


Glosario#

TérminoDefinición
ScaffoldGenerador automático que crea modelo, controlador, vistas y rutas básicas para CRUD.
Active StorageSistema de Rails para gestionar archivos adjuntos (imágenes, PDFs, etc.).
TailwindCSSFramework CSS basado en clases utilitarias para diseño rápido y flexible.
Precision / ScaleDefinen la cantidad total de dígitos y decimales en un campo numérico.
SeedsDatos iniciales cargados en la base de datos con db:seed.
Include ActiveStorage::SetCurrentPermite a Rails enlazar los archivos al contexto actual del usuario o sesión.
HTML5 TransparenteRails genera y gestiona código HTML de fondo sin intervención manual.

Reflexión final#

En esta práctica comprendimos cómo Rails automatiza la estructura del proyecto, integrando de forma transparente TailwindCSS, Active Storage y migraciones. Esto permite desarrollar aplicaciones visuales, consistentes y dinámicas sin depender de configuraciones manuales, aplicando los principios de convención sobre configuración y automatización inteligente.

2.12 Parte 1 Creación Del Proyecto “depot” Con Rails Y Tailwindcss
https://jangelmm.github.io/posts/informatica/ingenieriasoftware/programacion-web/2-html-xml-y-css/212-parte-1---creación-del-proyecto-depot-con-rails-y-tailwindcss/
Author
Jesús Ángel Martínez Mendoza
Published at
2025-10-19
License
CC BY-NC-SA 4.0