Novedades en Edge Rails #3
Posted: Noviembre 21st, 2008 | Author: Juan Lupión | Filed under: blog |Antes que nada esta semana, una advertencia para aquellos que no sigan de cerca el estado del repositorio de Rails – “edge” ahora significa el filo de la navaja. Ya se está preparando el lanzamiento de la release 2.2 y el repositorio se ha bifurcado; por el momento la versión edge de Rails se identifica como 2.3 , aunque el número de versión podría cambiar más adelante. Si queremos instalar la versión 2.2 en nuestra máquina, deberíamos asegurarnos de que estamos usando la rama 2-2-stable, y no edge, que está sufriendo cambios profundos.
El código en 2-2-stable aún sigue viendo cambios, pero son pequeños ajustes. Esta semana, se trata de corregir un bug en la asignación en asociaciones has_one :through , más ajustes a la protección CSRF , y una correción a la manipulación de checkboxes para valores booleanos, así como la actualización de las copias incluidas de TZInfo, Prototype, script.aculo.us. También se ha avanzado en la compatibilidad con Ruby 1.9 (aunque el objetivo de soportar Ruby 1.9 en sus totatlidad está planteado para Rails 2.3).
Las mayores modificaciones en la rama 2.2 es la adición de soporte explícito de internacionalización en los proyectos Rails recién generados, incluyendo un archivo de locale de ejemplo, la autocarga de todos los locales que existan en config/locales y configuración de ejemplo en config/environment.rb. commit
También es destacable que en 2.2 se ha eliminado un buen trozo de código, desapareciendo de los casos de tests de ActiveRecorod todo un embrollo de casos especiales para el adaptador de SQL Server. Ken Collins ha hecho un tremendo trabajo consiguiendo que el adaptador de SQL Server funcione de la manera que Rails espera que lo hagan los adaptadores, lo cual es un gran pasado en el área de la portabilidad de los adaptadores. commit
En cuanto a la rama edge, ahí tenemos todavía más acción dado que en esta rama recién abierta acaba de entrar un montón de código que estaba esperando su momento. Corren tiempos interesantes y merece mucho la pena descargarse edge. Pasemos a ver algunos de los cambios más notables de la última semana.
Muchos cambios son obras de Jeremy Kemper, que ha estado mejorando los tests internos de Rails para cambiar de Test::Unit::TestCase a ActiveSupport::TestCase. Esto incluye también el requisito de usar Mocha para testar Rails (en el código 2.2, si no tenemos Mocha instalados, algunos tests serán ignorados), así como hacer que la estrategia de testing en Rails (tanto en el core como en las aplicaciones generadas) sea más consistente de ahora en adelante.
Aquellos a los que molestaba el caso especial del nombre de archivo application.rb se alegrarán de saber que se ha cambiado a application_controller.rb. Hay más información aquí y aquí . commit
Con Rails 2.3 se introducirá la noción del default scopes : similares a los named scopes, pero que se aplican a todos los scopes o métodos find dentro de la clase. Por ejemplo, podemos escribir default_scope :order => 'name ASC' y en culauqie rmomento en que se accedan a registro de esa clase, serán recuperados ordenados por nombre (a no ser, claro está, que se indique otra opción) commit
Muchos programadores han adoptado la noción de usar try() a la hora de lanzar operaciones en objetos – he aquí el post en el blog de Chris Wanstrath que lo presenta. Esto es especialmente útil en vistas donde uno puede evitar los chequeos de nil escribiendo código como< %= @person.try(:name) %>. Pues bien, ahora está incluido dentro de Rails. commit
También en el terreno del azúcar sintáctico aparece Enumerable#none? para comprobar que ningno de los elementos cumplen con el bloque proporcionado. commit
El método render se ha ido haciendo más listo conforme pasan los años, y lo será aún más en la 2.3. Si tenemos un objeto o una colección y los nombres conciden, ahora podemos hacer tan sólo < % render @article %> o < % render @articles %> y todo funcionará. Ryan Daigle ha escrito algunos ejemples de esto. commit
En el mismo orden de cosas, en 2.3 render_component ha pasado de “a extinguir” a “inexistente”. Si es necesario, aún podemos instalar el plugin . commit
El helper autolink se ha refactorizado para hacerlo un poco menos complicado y más intuitivo. commit commit
Ha habido un arreglo para una fuga de memoria relacionada con el soporte de multithreading y los tags de assets, que podría perjudicar a sites que estuvieran referenciando muchas imágenes externas. Aaron Batalion ha contribuido la solución a este problema, así como un blog explicando el problema. commit and commit
Por último, merece la pena mencionar que ha surgido algo de controversia alrededor de un cambio hecho al código 2.2 hace cinco meses – la adición de Array#second a Array#tenth como aliases de Array#[1] a Array#[9]. Sin tomar partido en la controversia, notaremos que el cambio más reciente en edge ha reducido el soporte sólo de Array#second a Array#fifth – y con el ahorro ahora se ha podido implementar Array#forty-two. commit

Leave a Reply