Mi guía de Ruby – Las clases y curiosidades OOP
Es una parte esencial, conocer algunos aspectos primordiales sobre las clases de Ruby para que cuando veamos código Rails podamos entenderlo bien. Todas las cosas que utilizamos en Ruby son objetos, los resultados también, por ejemplo, si tenemos una tienda online y disponemos de categorías, deberíamos definir una clase para representar cada una de esas categorías, que además, una clase es una combinación de estado como la cantidad de un pedido y un método o varios que nos permiten saber el precio con iva o sin iva o el coste total del pedido en linea. Cuando tengamos definido esto, debemos instanciarlas o crear los objetos que además también los podemos crear llamándolos mediante constructores que están normalmente asociados a una clase.
Piensa que un objeto es un contenedor de datos que controla el acceso a dichos datos y que dispone de una serie de variables que lo definen, los atributos. También hay o debería haber una serie de funciones que crean un interfaz para interactuar con el objeto, los llamados métodos. Por tanto cuando estamos dando vueltas a como diseñar nuestra clase, debemos pensar en los objetos que serán creados por esa misma clase, pero es fundamental pensar en que cosas podrá hacer ese objeto, y también en las características que lo van a definir. Una clase principalmente la vamos a utilizar para crear o moldear un objeto y un objeto es una instancia de la clase.
Leer más…
Mi guía de Ruby – Poniendo algo de sentido y sentimiento
Es primordial, dar sentido a las cosas que vamos haciendo y ponerle sentimiento en cada línea de código que vamos construyendo. Ruby es uno de esos lenguajes que uno debe detenerse a contemplar, para no dejar pasar detalles muy interesantes.
Voy a comenzar hablando de alguno de esos detalles de Ruby a tener en consideración, cómo podemos mejorar algunas de las sentencias que alguna vez ponemos y llevarlas a la práctica para mejorar nuestro código a la vista de los demás.
Vemos algunos de estos detalles de los que estoy comentando y como digo, merecen la pena entrar en los detalles y conocerlos, despés está en nuestra mano el hacerlo para mejorar.
Leer más…
Mi guía básica de Rails: CRUD
Con esta guía básica de Rails quiero repasar, resumir conceptos básicos necesarios y que sirva de base para aquellos que quieran adentrarse en el mundo Rails. Comenzamos viendo qué es el concepto de CRUD.
Imagínate que primeramente tenemos una única tabla en la que vamos a guardar nuestros posts, esta tabla dispone de una serie de campos para definir qué y cómo vamos a almacenar dichos posts, el id para identificar únicamente a un post, el post que escribimos y el user de quién lo ha escrito. Pero como toda la tabla está dividida en filas y columnas, de las que cuando necesitemos recuperar un registro completo, hablaremos de filas en nuestro caso recuperaremos una Hash (ahora lo vemos) y cuando hagamos referencia a algún dato concreto, necesitamos saber el nombre de la columna que está situada en la parte superior, como el name, id, post o los campos de nuestra tabla.
Por ejemplo si queremos recuperar una fila con el identificador id 21 lo recuperamos en una hash:
post = { :post => “This is my 21 post”, :user => “Carlos Sánchez Pérez” }
Pero una hash ¿qué es?. Leer más…
Complemento a Eager loading Associations y entender las diferencias entre Join, Left Join y Right Join
Hace poco escribía un post impulsado por avanzar en RubyOnRails y titulaba el post: ¿Cómo puedo reducir el número de Queries utilizando RubyOnRails con Active Records? joins, include – Eager loading Associations y en una tertulia de mañana con algunos compañeros de trabajo sobre el tema include y join si hay o no diferencias, pensé que dicho post no quedara lo suficientemente claro y por no dejar temas difusos escribo el título de “Complemento a Eager loading Associations y entender las diferencias entre Join, Left Join y Right Join“. La cuestión es que un include y un join hablando en Rails no es lo mismo y no sólo esa es la cuestión, es que nada tienen que ver uno con el otro.
Leer más…
Whenever: Una gema en Ruby para facilitar la escritura de nuestros ficheros de cron
Whenever es una gema en Ruby que he probando para ponerla en un proyecto en el que estoy actualmente y merece la pena comentarla. Normalmente cuando he tenido que escribir algún cron para que en ciertos momentos se ejecuten automáticamente tareas que necesita un proyecto de su apoyo, siempre se presentan las dudas de cómo es el formato, horas minutos y qué orden llevan, bueno eso es normal, no estoy haciendo cron constantemente. Pero a lo que voy, es que Whenever nos facilita esta labor desde un lenguaje natural de escritura de nuestros cron. Leer más…
Entender las máquinas de estado, State Machine, AASM y Workflow
Hace poco que me encontré en la situación de utilizar en un proyecto “state machine” y en alguna que otra ocasión alguna discusión sobre si utilizar State machine o Workflow. Si voy a the Ruby ToolBox me encuentro que en el top de utilización está en orden de aparición State Machine, AASM y Workflow por lo que he montado un pequeño laboratorio de prácticas en las que pongo en prueba las tres y entender cómo funcionan.
Leer más…
¿Cómo puedo reducir el número de Queries utilizando RubyOnRails con Active Records? joins, include – Eager loading Associations
Lo que voy a explicar en este post, es fruto de algunas preguntas que suelen ocurrir cuando quieres mejorar los resultados de consultas a la Base de Datos y conversaciones entre compañeros de profesión. Normalmente cuando te preguntas ¿cómo puedo hacer que estos no me arroje tantas queries en una consulta que estoy haciendo? o ¿Cómo puedo hacer que entre dos tablas sacar algunos campos que sólo me interesan extraer esos datos y no todos?
Para lo que voy a exponer, necesito ponerte en situación. Las tablas que necesitamos son, productos en nuestro modelo Product y que tendremos asociadas unas categorías en una tabla de categorías en nuestro modelo de Category y tendremos que también puede darse el caso que necesitemos crear comentarios a nuestros productos y en ese caso tendremos nuestra tabla de comentarios en nuestro modelo de Review y claro está que no nos podía faltar nuestros usuarios en el modelo User. Bien con esto ya tenemos definido nuestro schema de la base de datos con la que vamos a trabajar.
Leer más…


