Cómo ven los fanboys a los lenguajes de programación
Vía RubyInside. El de sistemas operativos en el blog de Abel Mendivil. :)
Vía RubyInside. El de sistemas operativos en el blog de Abel Mendivil. :)
Me pasa el meme Miquel Camps, a.k.a gafeman. Y aunque no suelo ponerme objetivos oficialmente, voy a hacer una excepción :)
Pues nada, veremos lo que se cumple y lo que no.
Y si tienen ganas de seguir el meme, les animo hacerlo a Jordi Monné, Jesús Navarrete, Dani Torres Burriel, Alberto Gimeno, José Félix Lucía, David Bonilla, Manuel Recena, Abel Muiño, Mamen Pradel, Juan Luis Belmonte, Raúl Expósito, Isa Casanova, Sergi Almar... y paro aquí que igual ya es demasiada gente. Y sí, a algunos os lo paso para ver si dáis señales de vida, porque escribís todavía menos que yo XD.
Aunque en la documentación de Grails aparece un ejemplo de como escribir un test para una acción que recibe una petición en formato XML o JSON, no lo hace de como escribir un test de una acción que genera el JSON, que tampoco es que sea precisamente complicado.
Si lo único que quisieramos probar es que, en una cadena JSON, se está devolviendo algún valor que estuvieramos esperando, podríamos utilizar el contenido que devuelve la response como una cadena(con contentAsString) y hacer alguna comprobación sobre el texto:
def response = controller.response.contentAsString
assertTrue response.contains('"name":"Gustavo Poyet"')
assertTrue response.contains('"goals":63')
Pero claro, este test es un muy ligero y no prueba demasiado. Si quisieramos probar más a fondo la respuesta(estructura, un elemento concreto de un array, etc), podríamos usar contains sobre la cadena devuelta, convertir tipos... vamos, que sería más que posible que el código del test terminara siendo infumable. Pero está disponible out of the box el converter JSON de Grails, que permite testear más a fondo fácilmente y con un código mucho más claro.
Es muy posible que si alguien se ve en la necesidad de escribir un test para una acción que devuelve un JSON, ya conozca el converter, por que es una de las alternativas que hay para hacerlo:
render object as JSON
Pues esa misma clase, tiene el paso contrario, pasar una cadena a un objeto groovy/java(JSONElement). De esta forma ya nos ahorraremos trabajo sucio y el código quedará bastante claro:
def response = controller.response.contentAsString
def responseJSON = grails.converters.JSON.parse(response)
assertNotNull responseJSON.players
assertEquals 5, responseJSON.players.size()
assertEquals 63, responseJSON.players[0].goals
assertEquals "Gustavo Poyet", responseJSON.players[0].name
Gracias a @tomaslin, me encuentro un más que interesante post llamado Thank you, Rails de Jacob Kaplan-Moss, presidente de la Django Software Foundation, con quien no podría estar más de acuerdo!
Es más que habitual ver gente de dentro de una comunidad de un framework inspirado en Rails hacer críticas más o menos feroces hacia el propio Rails, y comparar el framework de turno con Rails para "demostrar" que tiene mejor rendimiento, que escala mejor(en cualquier caso, pienso que sería más correcto decir que es más fácil escalar), etc., afirmaciones que pueden ser más o menos reales, aunque hay por ahí algunos benchmarks/comparativas que hay que cogerlos con pinzas.
A mi, en la mayoría de los casos, me parece una actitud negativa que "enfrenta" comunidades, a ver quien la tiene más larga, y no lleva a ninguna parte. Es mucho más inteligente observar, aplaudir y por qué no copiar o adaptar, los avances de frameworks diferentes al "mío".
Para mi, el gran mérito de Rails, además de que se haya creado una comunidad más que interesante alrededor suyo, es que replanteó a muchos como se llevaba a cabo el desarrollo web, y por ello que hayan salido tantos frameworks web que lo han tenido como ejemplo para tener algo similar en otros lenguajes de programación (Grails, Django, CakePHP, Symfony, Roo, Zend, Play!, y otros muchos que me dejo).
Y volviendo al post de Jacob Kaplan-Moss, agradece principalmente dos cosas de Rails:
Jacob habla de que la comunidad Python a veces se toma a ella misma demasiado en serio: necesitaba ser un lenguaje serio, usado por gente seria, para empresas serias y grandes desarrollos(a.k.a. "enterprisey").
Y llegó Rails para recordar que el desarrollo web debería ser algo divertido, la comunidad Rails en general desprende que se pueden desarrollar productos pequeños, divertidos, ligeros y además hacer dinero con ellos.
Rails, por un lado no pretende cubrir el máximo de casos de uso reales, para eso hay plugins que pueden facilitar la vida; y por otro, es un framework opinado (aquí entra lo de Convention over Configuration ;)). Lo que quiere decir que el framework tiene un funcionamiento por defecto que no es necesario configurar, para ahorrar decisiones al desarrollador, lo que lo hace más simple.
Resumiendo, gracias a Rails, estos nuevos frameworks tratan de minimizar el trabajo "genérico" de los desarrolladores, sin querer llegar a cubrir cada caso de uso.
¿He dicho que el lenguaje con el que más he trabajado(y sigo trabajando) es Java? Considerado uno de los lenguajes más "serios" y más complejos en cuanto a configuraciones, especificaciones... pero sobre todo en la forma que se ha venido utilizando. Y gracias a Rails han aparecido algunos frameworks web interesantes como Grails o Play!, y creo que algunos otros de los que no hablo porque no tengo suficientes referencias, que son más divertidos y minimizan el trabajo.
Por esto, además de porque he trabajado con Rails y que tengo pendiente retomarlo XD, gracias!
Una bendición esto de las actualizaciones automáticas de wordpress, sobre todo para los que no nos gusta perder tiempo manteniendo nuestra instalación :P
He pasado de 2.7.1 a 2.8.5 y por ahora sin problemas, si alguien encuentra algo, se agradece el aviso ;)