Scaffolding – Utilizar o no herramientas

Primero que nada, te agradezco a ti que pasas por este abandonado blog. También quisiera aclarar que esto que escribiré acerca del scaffolding es una opinión totalmente personal, apoyada debido a la poca experiencia con la cuento, y que nace de una charla que sostuve con unos colegas, así que realmente me gustaría leer sus comentarios al respecto.

Bien, repasemos de que estamos hablando, el scaffolding es una técnica utilizada por la gran mayoría de frameworks MVC para designar la construcción automática de aplicaciones, basándose en el esquema de la base de datos. Técnica la cual tengo entendido, se volvió popular gracias a Ruby on Rails , y ya que lo menciono, este será el framework designado para los ejemplos. Entonces podemos resumir qué el scaffolding nos permite tener un CRUD rápidamente.

Logo Rails Scaffolding

Logo Rails

Supongamos que estamos desarrollando un blog, actualmente sólo contamos con el modelo Article, y nos topamos con la necesidad de añadir un nuevo modelo para almacenar los comentarios, tendríamos que escribir el siguiente comando:

bin/rails generate model Comment commenter:string body:text article:references

Como resultado del siguiente comando, se generarán cuatro archivos, el primero de ellos será la migración para crear la tabla comments en la base de datos, almacenado dentro de db/migrate/nombreArchivo, cuyo nombre se compone de la siguiente forma timestamp_create_comments.rb Luego podremos encontrar el modelo Comment en app/models/comment.rb. También encontramos los tests del modelo en test/models/comment_test.rb y dentro de test/fixtures/comments.yml se generarán comentarios de prueba para los tests.

Luego de esto debemos generarán un controlador para trabajar con el modelo que acabamos de crear, y aplicar los cambios a la base de datos, lo cual lograríamos con los siguientes comandos.

bin/rails generate controller Comments
bin/rake db:migrate

Si lo sé, con Rails es muy sencillo de llevar estas tareas a cabo. Sin embargo, con el scaffold podríamos realizarlo más sencillo todavía. bastaría con hacer algo como:


bin/rails generate scaffold Comments commenter:string body:text article:references

bin/rake db:migrate

Este comando es igual a crear un modelo, ya que de igual manera creará la migración correspondiente y el modelo con sus atributos, Pero, además va a crear por nosotros el controlador con los métodos correspondientes (index, show, new, create, edit, update y destroy) y los archivos de pruebas. Vaya que es más sencillo ¿no lo creen?

Realmente sí, pero en lo personal, y aquí viene mi opinión, esto no sirve si no se conoce como funciona el framework. Pienso que antes de utilizar este tipo de magia herramientas, se debe conocer la estructura de lo que estás utilizando, conocer sus bases, hacerlo manual, para que, en el caso de que el scaffolding llegué a hacer algo que no esperabas, puedas solventarlo sin la necesidad de entrar en pánico.

Bien, creo que por ahora termino así, me gustaría mucho leer sus comentarios al respecto. Saludos.

Creando aplicaciones web con Sinatra y Ruby: más allá de los Rieles.

Hola y bienvenido. En esta entrada voy a dar una breve introducción a Sinatra y Ruby, el cual es posiblemente el segundo framework más utilizado del lenguaje.

Sinatra y Ruby

En la actualidad, cuando se escucha o se lee acerca del lenguaje de programación Ruby, suele interpretarse erróneamente como Ruby on Rails, esto gracias a la falta de conocimiento de muchos pseudo-programadores que piensan que son una misma cosa. Así que definamos conceptos, Rails  es un marco de trabajo (framework para los puristas), del lenguaje Ruby, el cual nos permite desarrollar aplicaciones web. Fue usado en sus inicios por Twitter, así que debe ser bueno ¿cierto?

Rails nos brinda todo para que podamos desarrollar aplicaciones robustas, proporcionándonos desde un inicio una estructura siguiendo la arquitectura MVC (Modelo-Vista-Controlador), y muchas otras cosas, pueden visitar su documentación si es que aún no lo conocían para ver más detalladamente sus bondades, yo aquí los espero…

¿Listos? Bien, continuemos…a estas alturas podrás estarte preguntando, ¿por qué utilizar otro framework cuando Rails nos proporciona tanto? La respuesta es sencilla, Porque Rails nos proporciona tanto. ¿No quedó claro? Dejame explicarte un poco más.

Sinatra y Ruby

Sinatra se define a si mismo como un DSL para crear aplicaciones web en Ruby con un mínimo esfuerzo. Esto lo logra quitándonos características las cuales según nuestro proyecto, no necesitamos, pero es mejor que veamos código cierto.

Lo primero que debemos hacer es instalar la gema de Sinatra.

Sinatra y RubyUna vez que termina de instalarse, vamos a ver lo sencillo que es de utilizar,

Cuando utilizamos Rails, debemos generar un proyecto, hacer un par de configuraciones y ponernos a codificar, con Sinatra y Ruby nos olvidamos de esto y vamos directo al código, en mi caso crearé un archivo llamado test-sinatra.rb.

Lo primero que haremos para probar la sencillez y poder de Sinatra es crear una ruta.

# test-sinatra.rb
require 'sinatra'

get '/' do
  '<h1>Mi primer Ruta definida con Sinatra :D!<h1>'
end
Sinatra y Ruby

Sinatra y Ruby

Y al ejecutar esto desde la consola, debemos tener una salida similar a esto:
Sinatra y RubyLo cual significa que nuestro servidor Sinatra está funcionando. Ahora, si desde tu navegador accedes a http://localhost:4567/ deberías tener una salida similar a esta:
Sencillo cierto, en Sinatra, una ruta no es más que un método HTTP
junto a un patrón de coincidencia de URL, donde cada ruta debe estar asociada a su bloque.
Por lo tanto, las siguientes rutas son validas:

get '/' do
  # bloque de código
end

post '/' do
  # bloque de código
end

put '/' do
  # bloque de código
end

patch '/' do
  # bloque de código
end

delete '/' do
  # bloque de código
end

options '/' do
  # bloque de código
end

link '/' do
  # bloque de código
end

unlink '/' do
  # bloque de código
end

Un punto que hay que cuidar con Sinatra, es que las rutas coinciden en el orden en que
son definidas, esto quiere decir que la primer ruta que coincida con la solicitud
del cliente es la que será invocada.

De igual forma, podemos tener rutas dinámicas, las cuales nos permiten definir parámetros
con nombre, los cuales serán accesibles desde el hash params.

get '/hola/:nombre' do
 # http://localhost:4567/hola/Mushr00m
 # params['nombre'] es 'Mushr00m'
 "<h1>Hola, #{params['nombre']}!</h1>"
end

Ahora, para realizar la prueba de esto, debemos detener nuestro
servidor y volver a ejecutarlo. Al hacer esto podemos probarlo ingresando a
http://localhost:4567/hola/:nombre dónde, debemos sustituir :nombre, con
la cadena que deseemos. Debes tener una salida similar a:

Sinatra y Ruby

Nota como en la URL sustituí :name por Programadores, y esto es lo que imprimió el mensaje,
genial ¿cierto? 😀

Eso no es todo, Sinatra nos permite crear las rutas de distintas maneras,
utilizando parámetros de bloque, condiciones, expresiones regulares, además de otras
peculiares formas que Sinatra nos permite.

Como espero poder haber mostrado, Sinatra es una muy buena opción para
crear aplicaciones web rápidamente y de una forma sencilla. Además de esto,
podemos servir archivos de plantillas, les recomiendo lean la documentación oficial,
o si gustan, escribiré otra entrada para profundizar un poco más en este excelente framework.

Y bien, Sinatra es una excelente opción y alternativa a Rails, como framework para desarrollar
aplicaciones web utilizando Ruby, y no se crean, con Sinatra podemos tener las caracteristicas
que nos brinda Rails con a penas un poco de esfuerzo extra.

Espero te sirva esta entrada, cualquier comentario, sugerencia o punto de mejora que encuentres
te estaré agradecido si lo dejas en los comentarios.
Saludos 😀

Curso de Programación Ruby – (Presentación)

Curso de Programación Ruby.

Presentación del Curso

Curso de Programación Ruby

Curso de Ruby

Este curso pretendo que sea ameno y didáctico, y espero que sirva para todas aquellas personas que estén interesadas a introducirse en el mundo del desarrollo de software a poder cumplir este objetivo, y que pronto comiencen a desarrollar sus propias aplicaciones.

Este curso será utilizando el lenguaje de programación Ruby . Esta dedicado para cualquier persona interesada en el mundo de la programación, desde chicos a grandes, sin importar si ya tienen experiencia con algún otro lenguaje.

Bien, sin mas por el momento los dejo con la presentación del Curso.

El objetivo es finalizar el curso en menos de un mes, los invito a que estén pendientes del blog y que se suscriban a mis redes para que se enteren al momento de que se publiquen las demas entradas del curso. 😀