Saltar al contenido

Empezando con los rieles

Rails puede ser el marco de trabajo más popular para construir aplicaciones web en Ruby, pero es más que eso: es una gema de Ruby en sí misma. Por supuesto, como gema, Rails también tiene dependencias de gema. Así que es una buena idea aprender primero a escribir programas Ruby independientes y conocer el lenguaje Ruby, junto con su sintaxis y reglas, antes de sumergirse en Rails. Si nos saltamos este paso, es probable que tengamos dificultades para entender el marco de trabajo de Rails, que está escrito en Ruby, para Ruby.

Si eres nuevo en Ruby y Ruby on Rails, querrás usar RVM para instalar Rails. RVM es un sistema de gestión de gemas de Ruby que se encarga de las dependencias de las gemas por ti. Hay otras opciones, pero no todas ellas gestionan las dependencias de las gemas, lo que podría acabar por ponerte en un aprieto bastante rápido si no tienes cuidado. Otra opción popular es rbenv, aunque recomiendo RVM, ya que es lo que yo uso para desarrollar aplicaciones Rails exportables profesionalmente.

Empezando con los rieles
Empezando con los rieles

Instalación de rieles en Windows

Las chicas de Rails y las organizaciones de Railsbridge recomiendan el RailsInstaller. Y aunque hay una versión disponible para Mac OS, los usuarios de Mac deberían instalar primero Xcode para poder instalar la RVM y la base de datos Postgres (esto es lo que la mayoría de las aplicaciones de Rails utilizan en los entornos de producción).

Instalación de rieles en Mac OS X Yosemite

Primero, asegúrate de que tienes la última versión de Xcode instalada. Luego, considera la instalación de Homebrew, que puede hacer menos dolorosas las futuras instalaciones de aplicaciones en Macs. Abre tu terminal para instalar Homebrew ejecutando el siguiente comando en una sola línea en la terminal y presiona Return:

rubí -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»

Siga las instrucciones. Una vez que Homebrew termine de instalarse, ejecuta este comando en tu terminal:

Si todo ha ido bien, deberías recibir este mensaje de salida:

Su sistema está listo para prepararse

A continuación, instalar Git y RVM usando Homebrew:

brew update

brew install git

Si eso funcionó, al ejecutar el comando «git -versión» debería obtener un mensaje como, «git versión 2.3.1 o posterior». A continuación, descarga e instala Github para Mac, y sigue las instrucciones e indicaciones a través del programa de instalación. Este video tutorial gratuito puede ayudar. Finalmente, instala RVM, que automáticamente instalará las últimas versiones de Ruby y Rails para ti. En su terminal, ejecute el siguiente comando:

curl -L https://get.rvm.io | bash -s stable –auto-dotfiles –autolibs=enable –rails

Cuando termine, cierre y vuelva a lanzar la terminal y ejecute este comando:

Si recibes un mensaje como «rvm es una función» o algo muy similar, ¡estás listo para ir!

Puedes encontrar mucha información sobre cómo se instala el sistema de gestión de gemas RVM ejecutando los comandos $0027echo $PATH y rvm list$0027.

Tu primera aplicación Rails

Ahora que hemos instalado la RVM con las últimas versiones de Ruby y Rails, disponemos de otra herramienta de línea de comandos para generar todo, desde una nueva aplicación Rails hasta modelos, controladores, migraciones individuales o incluso un andamio. Es el andamiaje de Rails lo que ha hecho tan popular a Rails, proporcionando el tipo de gratificación instantánea para ensamblar una simple pero hermosa aplicación web en el menor tiempo posible.

La arquitectura de las aplicaciones Rails es una arquitectura de Modelo, Vistas y Controladores (MVC). El modelo es responsable de mantener el estado de la aplicación, así como de hacer cumplir la lógica de negocio de la aplicación. Piensa en el modelo como un gatekeeper que también funciona como un almacén de datos. Mientras tanto, la vista genera una interfaz de usuario basada en la lógica del modelo y en la interacción con ese modelo por un controlador que recibe solicitudes o entradas de los usuarios que interactúan con la página web.

Y luego tenemos el controlador, que es como un policía de tráfico amistoso (piensa en Andy Griffith de Mayberry). Coordina las interacciones entre el usuario, las plantillas (o vistas), y el modelo. También es responsable de enrutar los eventos externos/peticiones a las acciones internas, administrar el cacheo, los módulos de ayuda (lo que da un impulso para ver las plantillas sin abrumar su código), y administrar las sesiones.

Los controladores de Rails muestran automáticamente vistas con nombres que corresponden a rutas válidas. Por ejemplo, si tenemos un controlador de productos con un método de índice (los métodos de controladores también se llaman acciones), tendríamos un archivo de vista llamado app/views/productsts/index.html.erb y Rails mostraría automáticamente esa plantilla en el navegador cuando navegamos a /products en la barra de direcciones del navegador, siempre que tengamos una ruta para ello.

La ruta puede ser la raíz de la aplicación, la raíz «store#index», como: $0027store$0027 , lo que le dice a Rails que cree un método de acceso store_path. La ruta también puede ser una ruta con nombre, una ruta normal o una ruta de recursos; recursos :productos, sólo para enumerar algunos ejemplos. Puedes encontrar más ejemplos de estos en el archivo de rutas que genera Rails. El archivo de rutas tiene un texto comentado que sirve de «cómo» para escribir el código de las rutas de nuestra aplicación.

Como un aparte, el orden en que las rutas de Rails se ejecutan se basa en el orden en que fueron creadas; el primero que se crea tiene la mayor prioridad. Se pueden generar modelos, controladores, vistas y migraciones individuales por separado, como muestra este ejemplo, con la generación de un modelo individual para una aplicación de flashcards:

Abriendo tu editor de texto, verás la tabla de migración de la base de datos que esto ha creado:

Si no quieres escribir el código de cada controlador y modelo individualmente (aunque a menudo no tendrás elección), puedes ejecutar el comando del andamio. Esto es lo que los autores del «Desarrollo Web Ágil con Rails 4» instruyen en su tutorial para montar una simple aplicación de comercio electrónico:

Un modelo se asigna automáticamente a una tabla de base de datos cuyo nombre es la forma plural de la clase del modelo. Así, Rails asociará ese modelo con una tabla de base de datos llamada «productos». Y así es como realizará las consultas de búsqueda SQL para él también

Aunque Rails viene con su propia base de datos SQL incorporada para el desarrollo, llamada SQLite3, en realidad se puede especificar una base de datos diferente cuando se ejecuta por primera vez el comando rails para hacer una nueva aplicación utilizando la bandera -d seguida de la base de datos deseada en lugar de la que viene incorporada en Rails. Por ejemplo, si quisiéramos usar MySQL o Postgres, lo especificaríamos así: rails new myOtherAwesomeApp -d postgresql

No está atado a SQLite3 si no desea utilizarlo (siempre y cuando tenga otras bases de datos instaladas).

Bien, volvamos al ejemplo del andamio de los rieles: Mirando en tu carpeta db/migrar, las migraciones correspondientes que este comando de andamiaje escribió para ti se ven así:

Rails mapea los datos relacionales sobre los objetos en lo que se conoce como Object Relational Mapping (ORM). Las bibliotecas ORM mapean las tablas de la base de datos a las clases, las filas a los objetos y las columnas a los atributos de los objetos. En Rails, ActiveRecord es la capa ORM y sirve como base de la arquitectura MVC de Rails.

Objetos de mariscalización

Dado que Ruby reúne objetos (lo que significa que puede tomar un objeto y convertirlo en un flujo de bytes que puede ser almacenado fuera de la aplicación) no debería ser una sorpresa que Rails también pueda reunir objetos. Rails usa marshaling para almacenar datos de sesión.

Rastrillo

Rake es un comando similar a Make que es para Rails. Rake busca las migraciones que aún no se han aplicado a la base de datos y también proporciona información sobre las rutas de Rails, y realiza pruebas. El comando rake routes te mostrará más información sobre las rutas disponibles de la aplicación.

También puedes obtener información sobre las rutas de tu aplicación desde el navegador cuando inicias el servidor de Rails, como muestra este ejemplo del currículum de Railsbridge:

Básicamente, Rails nos permite aprender el desarrollo de aplicaciones web dándonos la información necesaria para asegurarnos de que la comunicación entre los modelos y vistas y los controladores a través de las rutas de Rails están todas configuradas correctamente. Cuando generamos migraciones, ya sea generando modelos individuales o generando un andamio, debemos ejecutar las migraciones ejecutando el siguiente comando: rake db:migrate

Nota: ¡Si te olvidas de ejecutar las migraciones, tu aplicación no funcionará cuando inicies el servidor de Rails para verla en tu navegador localhost! Si no estás seguro de si has ejecutado tus migraciones o no, hay un comando rake db:migrate:status (que se muestra a continuación) que te lo dirá. Si ejecutaste tus migraciones, se mostrarán como «arriba» bajo el estado de la migración. Si tienes alguna migración que no fue ejecutada, se mostrará como «abajo».

No sólo puedes ejecutar migraciones y comprobar su estado, sino que también puedes retroceder y reiniciar tus migraciones si cometiste un error y olvidaste incluir un campo en tu tabla de base de datos. Esos comandos son rake db:rollback y rake db:reset, respectivamente. Además, Rails tiene la capacidad de importar datos de semillas, y puedes sembrar la base de datos de tu aplicación ejecutando el comando rake db:seed.

Ahora, una palabra de precaución aquí: Si ya has introducido otros objetos en tu base de datos y luego decides probar este comando rake (para sembrar tu base de datos), perderás automáticamente lo que había en tu base de datos porque el script seeds.rb elimina los datos existentes de las tablas antes de cargar nuevos datos. Por lo tanto, es mejor usar este comando rake para sembrar tu base de datos si no pasaste horas escribiendo tu propia información para las tablas de la base de datos de tu aplicación.

También puedes usar rake para ejecutar pruebas en el conjunto de pruebas integradas de Rails: rake db:test, rake db:test:modelos, y rake db:test:controladores ejecuta pruebas en toda la aplicación, pruebas de unidad y pruebas de integración, respectivamente.

(Sí, realmente escribí mis pruebas unitarias, y sí que puedes escribir código que pase esas pruebas, ¡y el conjunto de pruebas de Rails incorporado hace que esto sea mucho menos difícil de lo que crees!)

Deberías familiarizarte con las herramientas de rastrillo que ofrece Rails, porque te hará la vida mucho más fácil como desarrollador.

Las vistas

Las plantillas para mostrar las vistas de página en Rails usan Ruby embebido, y la sintaxis se parece mucho a ASP.NET. Es en estos archivos .erb, en el directorio de vistas de la aplicación Rails, donde escribiremos el código para todo lo que involucre el renderizado de vistas; lo que el usuario final ve en su pantalla. Esto incluye todo, desde la visualización de enlaces e imágenes a los carritos de la compra hasta la implementación del método form_for de Rails para generar un formulario para recibir las entradas del usuario, como un formulario de contacto. Más sobre esto más adelante.

Usando el controlador y las vistas de productos, y el modelo de producto como ejemplo mencionado anteriormente, esto es lo que verás si escribes http://localhost: 300 en tu barra de direcciones después de seguir el tutorial del libro «Agile Web Development With Rails 4» para crear las vistas de productos:

La consola de Rails

La consola de Rails es, para decirlo de forma sencilla, una shell de Rubí interactiva dentro de una aplicación de Rails. En otras palabras, es irb para Rails. Podemos utilizar la consola de Rails para depurar código, comprobar los resultados de los fragmentos de código de prueba o modificar nuestra base de datos a través del modelo ActiveRecord en nuestro proyecto Rails.

El comando abreviado que ejecutaríamos para entrar en la consola de Rails es rails c. Sin embargo, tened en cuenta que cualquier cosa que creéis mientras estáis en la consola de Rails cambiará vuestra base de datos. Hay una forma de practicar algunos comandos y consultas en la consola de Rails sin alterar los registros de la base de datos de nuestra aplicación. Ejecutemos en su lugar el comando rails c –sandbox; esto nos permite entrar en la consola de Rails e interactuar con ella sin hacer ningún cambio permanente en la base de datos.

Dentro de la consola de Rails, podemos ejecutar comandos de Ruby y utilizar cualquiera de los métodos disponibles en una aplicación Rails. La consola de Rails se carga en el entorno de desarrollo por defecto, pero si le pasamos el parámetro de producción al comando c de Rails, también podemos ejecutar la consola de Rails en el entorno de producción.

Puedes instanciar objetos de clase, como un objeto de producto de la clase Product en mi aplicación de ejemplo en y crear un registro para él así: p = Product.new. La consola de Rails también tiene algunas características de autocompletado. Por un lado, podemos pulsar la tecla Tab dos veces para que aparezca una lista de métodos disponibles que podemos llamar en ese objeto que es una clase String de Rails:

También puedes facilitar la lectura de la salida en la consola de Rails llamando al método y en ella, que la convierte en una salida YAML.

Y estos son sólo algunos de los métodos que podemos utilizar en un objeto que instanciamos en la consola de Rails:

Esto nos dice que el objeto p instanciado es un nuevo registro, no tiene un valor nulo, y no es seguro en html (cubriremos la protección de scripts de sitios cruzados en un post posterior).

También podemos usar la consola de Rails para obtener acceso instantáneo a una clase de controlador, y conseguir ver un id de sesión ejecutando el comando app.cookies. Podemos llamar a un método helper para ver la salida html de un campo de texto, y podemos llamar al método pluralize que devolverá un valor. También podemos comprobar para ver los diferentes métodos disponibles para nosotros, y qué métodos terminan en camino.

Hemos cubierto mucho, pero hay muchas más cosas que puedes hacer una vez que te familiarices con la consola de Rails.

Consigue nuestro contenido primero. En tu bandeja de entrada.

1229

Contribuyente

Jacqueline Homan

es un consultor, autor de Pluralsight e ingeniero de software para AstralAR, LLC que se especializa en investigación combinatoria y de operaciones. Sus herramientas preferidas son F# y Ruby. Jacqueline ha estado en el campo de la informática desde 2013, trabajando principalmente en proyectos centrados en la optimización y el análisis de datos. Sus compañeros de equipo en AstralAR la apodaron «Capitán Cálculo». Puedes seguirla en Twitter en: @jacquelinehoman.