Rails 4: el utilizar o no inverse_of en mis relaciones ¿qué me implica? y ¿cómo afecta la versión de Rails 4.0 y 4.2?

rubyonrailsEn algún momento de nuestros proyectos hemos utilizado inverse_of, pero me pregunto ¿nos hemos detenido a investigar todas sus posibilidades? y ¿qué ocurre si cambio de versión en mi proyecto y no lo tengo claro? , ¿qué problemas me puedo encontrar? cuidado!, tienes que considerar ciertos aspectos de los que vamos a ver en este post. Voy a explicar el uso de inverse_of en la versión 4.0 de Rails y cómo se comporta también en estos casos con la versión Rails 4.2 :inverse_of (puedes ver este pull request). Existen varios casos en los que un inverse_of debes saber utilizarlo y yo te explico cómo puedes entenderlo y aplicarlo. Seguir leyendo

Rails 4: ¿Cómo crear un formulario y utilizar accepts_nested_attributes_for con Has-Many-Through Relations? algunos consejos para entenderlo desde cero

rubyonrailsLa idea de escribir este post, surge de la idea de comenzar a hacer piezas cortas de código para practicar más y por otro lado ver que una y otra vez, se hacen formularios de todo tipo de relaciones entre modelos, unos son básicos en cuanto a que no existe complejidad alguna, por ejemplo una has_may/belongs_to y algunos otros se van complicando y viendo ejemplos existentes en Internet e intentar recopilar una buena información sobre cómo montar un formulario con form_for cuando tengo relaciones has_many through y necesito validar los campos que pertenecen a otro modelo utilizando accepts_nested_attributes_for demás de los propios del modelo principal, me he encontrado que no disponía de uno completo desde cero, así que me he decidido a desarrollar con un ejemplo práctico paso a paso y viendo todos los detalles que necesitas para entenderlo. Por lo que he montando un proyecto con un scaffolding y básico en este sentido, para que te lo puedas descargar de mi repositorio y probarlo por ti mismo. Hazlo y cuando lo tengas en marcha en local, sigue leyendo para terminar de entenderlo.

Antes de continuar una mención personal: me gustaría agradecer en este caso a Francis (twitter ciscou) por echarme un cable en primero, confirmar que lo estaba haciendo bien (viniendo de él es algo muy fiable) y segundo en darme cuenta finalmente que lo que estaba haciendo mal era la declaración de mi strong parameters (pensando en una declaración primitiva de los atributos de entities_attributes), haciendo que el comportamiento de la aplicación sea muy diferente y confuso a lo normalmente esperado, haciéndome creer la aplicación, que la interpretación del problema por mi parte lo tenía en en los accepts_nested_attributes_for y en las relaciones (no te preocupes que ahora te lo voy a explicar paso por paso y lo vas a entender cuando termines de leer el post o puedes ir directamente al paso cuarto, si ya sabes de qué estoy hablando). En definitiva, muchas gracias Francis!!

Seguir leyendo

Less / More – Show / Hide: necesito que mi listado pueda verlo mejor el usuario de mi aplicación ¿ JTruncate JQuery? o ¿Javascript a mano?

jquery-javascript En esta ocasión me gustaría compartir una experiencia reciente en la toma de decisión técnica y cómo gestionar el ánimo en esos momentos cuando está fallando, sabes que lo has probado y te ha funcionado, pero en el momento de salir a escena salta el fallo. En la mayoría de los casos que trabajamos con plugins o gemas, no dan muchos fallos cuando lo incorporamos en proyectos, normalmente me refiero a que o va bien o va mal, pero en otras ocasiones podemos encontrarnos casos que va bien pero también falla. Esto es lo que quiero explicar para que tomes en consideración algunos parámetros más antes de decidir que ya lo tienes terminado y probada tu funcionalidad.
Seguir leyendo

Mi experiencia como ponente en Codemotion España 2014

IMG_20141122_215106575Este año he tenido el privilegio de poder estrenarme como ponente en el Codemotion 2014 en España, es algo que ya tenía en mi mente como objetivo a cumplir desde que el año pasado asistí como oyente y pude comprobar que de Rails no se hablaba nada. Así que al ver que se permitía la posibilidad este año poder cumplir mi objetivo marcado, no me lo pensé dos veces y mandé dos charlas conjuntamente con dos compañeros de profesión Gaby que es un gran desarrollador de Rails y Samuel otro gran desarrollador de Drupal, nos sentamos y pensamos el contenido inicial de nuestras charlas a presentar.

Tengo que reconocer que inicialmente tenía previsto presentar cuatro y tocando diferentes palos, por ejemplo, dos de Rails una ya la había dado en MadridRB y era sobre “Ordenando las vistas. Decorator y Presenters” la otra es 10 cosas que deberías saber de Rails, una de NoSQL sobre The Emerging World of MongoDB que ya hablé el año pasado en ASPgems, y la última de Drupal y Rails pero pensé que sería demasiado si salían seleccionadas todas, un poco pretencioso por mi parte, pero podría ocurrir y ha ocurrido, de las 2 presentadas las dos aceptadas :).

Lo que me ha sorprendido de este año es la cantidad de asistentes, unos 2.000 y el amplio abanico de tecnologías expuestas y con un público más selectivo de lo que quiere aprender y a quién escuchar. En mi opinión personal, cuando voy a dar una charla, siempre tengo presente el respeto al público que asiste y responsabilidad para intentar trasmitirlo de forma clara y práctica la temática a tratar en cada momento y tengo que reconocer personalmente que me sorprendió “gratamente” la cantidad de asistentes, entre 20 y 30 más o menos en ambas charlas, sinceramente me esperaba menos gente y eso me motivó mucho. Los comentarios que me han llegado también, han sido sorprendentes y muy gratos. Por ese motivo, seguiré mejorando para poder ofrecer nuevas presentaciones, mostrar temas interesantes y seguir escribiendo.

Si quieres dejar un comentario, ni que decir que puedes hacerlo!!

Seguir leyendo

Rails: Selección de menús dinámicos dentro de Active Admin

rubyonrails Actualmente estoy desarrollando un nuevo proyecto de Ruby on Rails,  versión 4 de Rails y versión 2 de Ruby. En esta ocasión quería compartir una parte que he tenido que desarrollar y en la que he encontrado mucha materia pero que no me ha ayudado en esta ocasión demasiado.

El problema

En la parte del backoffice de un portal para la que estoy trabajando para nuestro cliente, estoy utilizando Active Admin. El caso es que esta es una particularidad a la hora de hacer las cosas, en este caso tengo una serie de select independientes de País, Cuidad y Población. Cuando tienes que seleccionar cada uno de ellos individualmente los seleccionas, esto es un poco feo por decirlo de alguna manera. Lo suyo sería una vez que secciones el País, deberían seleccionarse cada una de las provincias y ciudades, en un orden alfabético, después ya si necesitas una provincia concreta, haces la sección de la provincia y automáticamente te selecciona las poblaciones. Una vez dicho esto, parece fácil el desarrollo de la solución, te pones a ver que hay de ejemplos y encuentras muchos recursos unos mejores y otros muy poco útiles. Por eso me he puesto a explicar que solución he desarrollado, por si te encuentras en esta situación tengas un punto dónde poder tener los pasos de la solución y para ello voy a explicarlo lo mejor posible. Por ejemplo he visto un railscasts sobre este tema un poco viejo aunque hay una de pago actualizada, pero lo fuentes están aquí, en stackoverflow también hay mucho pero te dejo algunos de los que he visto, como este y este otro también por si te son de utilidad.
Seguir leyendo

Conferencia Baruco – Barcelona Ruby Conference 2014

ruby_barucoEste año he querido estar en la Baruco para comprobar de primera mano lo que tantas veces he escuchado de otros sobre ella, además tenía ganas de asistir y así tener mi propia opinión. Quiero agradecer a ASPgems que me haya dado esta oportunidad de disfrutarla, gracias!!.

Este Jueves 11 de Septiembre del 2014, Martín, Rebeca, Andrés y yo de ASPgems, hemos asistido a la Baruco 2014, una conferencia en la que puedes conocer a las personas con los que hablas/opinas/escuchas y a las empresas del mundo Ruby. Tal y como hemos ido comentando por twitter, opinión, comentarios, etc de cada uno de nosotros, en mi caso pude conocer a mucha gente, que es lo que me encantó, pero en especial algunos que no conocía y a otros, ya nos conocíamos en persona. Allí me pude encontrar con Xavi NoriaPat Shaughnessy que tenía ganas de conocerlo en persona, Yukihiro Matsumoto ….. mis compañeros (en tono de broma) me comentaron que era una persona muy bien relacionada por codearme con ellos :), la verdad son gente muy cercana y además saben mucho!!. Así que he podido vivir y escuchar de primera mano todo lo que se está cociendo en torno al lenguaje de programación Ruby. La organización ha sigo genial por parte de @codegram y un pleno total de asistentes. Seguir leyendo

Rails: Si necesitas callbacks, workers y estás pensando en arrays de objetos……..aquí te dejo las claves para entenderlo!

rubyonrailsHe estado trabajando en un proyecto express dentro de ASPgems, que consiste en desarrollar una idea y el compromiso de entregarlo en producción en una semana. No sé si otras empresas disponen de esta oportunidad en la que poder participar, pero yo me apunté sin dudarlo, es una experiencia muy buena, ya que te enfrentas a situaciones que en ocasiones los tienes resueltos y este tipo de reto, hace que vuelvas a tener la alerta activa. Os voy a contar en que consiste el proyecto para poder entrar en situación y entender de lo que intento explicar y las soluciones que he aplicado.

La aplicación consiste en saber que gemas está utilizando cada proyecto que se de de alta en la aplicación, por lo que debe disponer de una interfaz de usuario, para dar de alta un nombre de proyecto, una URL del repositorio para poder saber en su Gemfile las gemas que utiliza y leer en RubyGems  más información sobre ellas.

Según estaba planteando los retos de los puntos claves de la aplicación, lo primero que debía solucionar es, cómo interactúa esa interfaz de usuario y el tiempo de proceso que se lleva el disponer de toda la información de lectura del Gemfile, así como el reto en tiempo de ir a buscar cada una de las gemas a Rubygems y conseguir la información adicional de la descripción y el resumen. Esto plantea dos tipos de accesos externos que se necesitan para obtener información, uno al repositorio del proyecto y el otro a Rubygems y eso lleva un coste que hay que medir y tratar.
Seguir leyendo