Demo
En la parte anterior de este tutorial mencionamos que necesitas tener instalado Ruby en tu computadora para poder trabajar con el framework Ruby on Rails.
También instalamos Ruby on Rails, creamos un proyecto nuevo y lo probamos para verificar que se haya creado correctamente, asimismo instalamos Bootstrap para las vistas HTML.
En esta segunda parte continuamos con el tutorial Como Crear Un CRUD Con Ruby on Rails 7, vamos con ello.
Partes
Para poder realizar las tareas CRUD, necesitamos configurar y preparar nuestra base de datos.
Base de Datos
Para este proyecto usaré la base de datos MySQL, usaré la gema mysql2 para poder conectar el sistema CRUD a la base de datos MySQL.
Ejecuto el siguiente comando para instalar la gema MySQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
gem install mysql2 --platform=ruby -- --with-mysql-dir=c:/Ruby32-x64/msys64/mingw64 Using rubygems directory: C:/Users/jrclu/.local/share/gem/ruby/3.2.0 Temporarily enhancing PATH for MSYS/MINGW... Using msys2 packages: mingw-w64-ucrt-x86_64-libmariadbclient Building native extensions with: '--with-mysql-dir=c:/Ruby32-x64/msys64/mingw64' This could take a while... Successfully installed mysql2-0.5.5 Parsing documentation for mysql2-0.5.5 Installing ri documentation for mysql2-0.5.5 Done installing documentation for mysql2 after 0 seconds 1 gem installed |
Con ello ya tenemos soporte para MySQL en Ruby on Rails.
Básicamente necesitas apuntar a la ruta de instalación de Ruby en tu computadora.
Paso seguido voy a configurar la base de datos, mi base de datos la llamaré test y dentro de ella crearé una tabla llamada postres que me servirá para trabajar con las tareas CRUD (Create, Read, Update, Delete).
Tengo que decirle a Ruby on Rails como se llama la Base de Datos que usaré, para esto abro el archivo database.yml que se encuentra en config > database.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/crud-rails-7 ├── /app ├── /bin ├── /config ├── /environments ├── /initializers ├── /locales ├── application.rb ├── boot.rb ├── cable.yml ├── credentials.yml.enc ├── database.yml // Abre este archivo ├── environment.rb ├── importmap.rb ├── master.key ├── puma.rb ├── routes.rb ├── storage.yml ├── /db ├── /lib ├── /log ├── /public ├── /storage ├── /test ├── /tmp ├── /vendor ├── .dockerignore ├── .gitattributes ├── .gitignore ├── .ruby-version ├── config.ru ├── Dockerfile ├── Gemfile // Este archivo ├── Gemfile.lock ├── Rakefile ├── README.md |
Dentro archivo database.yml agrego los siguiente valores en la sección development:
1 2 3 4 5 6 7 8 9 10 11 12 |
development: #<<: *default #database: db/development.sqlite3 adapter: mysql2 encoding: utf8 database: test username: root password: host: 127.0.0.1 port: 3306 |
Tras agregar el código anterior, ya tengo conectado Ruby on Rails a mi base de datos MySQL llamada test.
Modelo
Creo el modelo que me permitirá usar mi tabla postres, voy a mi consola de comandos y ejecuto el siguiente comando para crear mi modelo postre, hasta la fecha de este Post, Ruby on Rails me pide que le de el nombre en singular a mi modelo, es decir postre y no postres:
1 2 3 4 5 6 7 8 9 10 |
rails g model postre invoke active_record create db/migrate/20240125003403_create_postres.rb create app/models/postre.rb invoke test_unit create test/models/postre_test.rb create test/fixtures/postres.yml |
Cuando intente ejecutar el comando anterior me aparecio un error, indicándome que debo agregar manualmente la gema mysql2 a mi archivo Gemfile.
El archivo Gemfile que se encuentra en el directorio principal del proyecto en crud-rails-7 > Gemfile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/crud-rails-7 ├── /app ├── /bin ├── /config ├── /db ├── /lib ├── /log ├── /public ├── /storage ├── /test ├── /tmp ├── /vendor ├── .gitignore ├── .ruby-version ├── config.ru ├── Gemfile // Abre Este Archivo ├── Gemfile.lock ├── package.json ├── Rakefile ├── Gemfile.lock ├── README.md |
Dentro del archivo Gemfile coloco la Gema de MySQL:
1 2 3 4 |
# Gema de MySQL gem 'mysql2', '~> 0.5.5' |
Cuando ejecuté el comando anterior para crear mi modelo postre puedes ver que en la terminal me indica que se me ha creado un archivo de migración llamado 20240125003403_create_postres.rb, el modelo con el nombre postre.rb, y 2 archivos de pruebas unitarias postre_test.rb y postres.yml, todos estos archivos Ruby on Rails los ha colocado en sus respectivas ubicaciones o directorios que se aprecian en la consola de comandos.
Migración
Vamos a definir los campos para la tabla postres en la base de datos, para esto voy a usar el archivo de migración llamado 20240125003403_create_postres.rb que se me creo cuando realice la creación del modelo, este archivo se encuentra en db > migrate > 20240125003403_create_postres.rb:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/crud-rails-7 ├── /app ├── /bin ├── /config ├── /db ├── /migrate ├── 20240125003403_create_postres.rb // Archivo de Migración ├── seeds.rb ├── /lib ├── /log ├── /public ├── /storage ├── /test ├── /tmp ├── /vendor ├── .gitignore ├── .ruby-version ├── config.ru ├── Gemfile // Abre Este Archivo ├── Gemfile.lock ├── package.json ├── Rakefile ├── Gemfile.lock ├── README.md |
Abro el archivo 20240125003403_create_postres.rb y agrego los campos para la tabla postres.
Estos campos serán nombre, precio, stock, img, url, timestamps y deleted_at. El campo t.timestamps me crea automáticamente los campos created_at y updated_at en la tabla postres.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class CreatePostres < ActiveRecord::Migration[7.1] def change create_table :postres do |t| # Campos de mi tabla 'postres' t.string :nombre t.string :precio t.string :stock t.string :img t.string :url t.timestamps t.column :deleted_at, :datetime, :limit => 6 end end end |
Luego de definir los campos de mi tabla postres, procederé a crear la tabla en la base de datos, para ello ejecuto el siguiente comando:
1 2 3 4 5 6 7 8 |
rake db:migrate == 20240125003403 CreatePostres: migrating ==================================== -- create_table(:postres) -> 0.0166s == 20240125003403 CreatePostres: migrated (0.0171s) =========================== |
Luego de ejecutar el comando anterior se me ha creado la tabla postres en mi base de datos test, si reviso mi base de datos mediante phpMyAdmin, puedo ver que se ha creado la tabla postres con los campos correspondientes:
Hasta aquí ya tengo creada y configurada mi Base de Datos test con la tabla postres para el Sistema CRUD.
También tuve que ejecutar el comando anterior usando la PowerShell de Windows, ya que con GitBash me daba el error que te menciono.
Ten Paciencia, lo que quiero es que entiendas todo el proceso para Crear este Proyecto y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje.
Nota (s)
- Los Pasos y opciones mencionados en este capitulo del tutorial pueden cambiar, esto no depende de nosotros, si no de los desarrolladores que dan soporte a Ruby, Ruby on Rails y a la gema mysql2, que suelen cambiar sus opciones de despliegue y configuración en futuras versiones.
- En el siguiente capitulo continuaré con la creación del Controlador del Sistema CRUD y otros detalles.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.