5 impresionantes nuevos carriles 3 características

Después de más de un año de desarrollo, Ruby on Rails 3 se lanzó oficialmente al público hace unas semanas. Más que una simple actualización iterativa, esta versión tan anticipada fue una importante refactorización del popular marco de Ruby. Sigue leyendo para aprender cinco de las características nuevas más impresionantes de Ruby Rails 3.


1. JavaScript no intrusivo

Una de mis nuevas características favoritas de Ruby on Rails 3 es la introducción de JavaScript no intrusivo (UJS) a todas sus funciones de ayuda de JavaScript. En versiones anteriores de Rails, JavaScript se generaba en línea con HTML, lo que causaba un código feo y algo frágil.

Como ejemplo, Rails te permite usar su link_to method para generar un enlace de borrado para algún objeto.

 <%= link_to "Delete this Post", @post, :confirm => "¿Realmente quieres eliminar esta publicación?",: Method =>: delete%>

El uso de este método en su vista generaría lo siguiente en Rails 2:

 Borra esta publicación

Rails 3 generaría algo mucho más simple:

 Borra esta publicación

Rails 3 reemplaza todo el JavaScript en línea con un par de atributos HTML5. Todos los controladores de eventos de JavaScript para manejar el cuadro de confirmación real y la eliminación se almacenan en un archivo de JavaScript central que se incluye con cada proyecto de rieles.

Una gran ventaja de este nuevo método es que los ayudantes de JavaScript son independientes del marco. En lugar de estar vinculado a la biblioteca de Prototype como lo estaba en Rails 2, ahora puede elegir el marco de JavaScript que desee (las aplicaciones de Rails vienen con Prototype de forma predeterminada, pero jQuery ahora tiene soporte oficial).


2. Seguridad mejorada

Otra nueva característica impresionante de Rails 3 es que la protección XSS ahora está habilitada de forma predeterminada. Rails 2 admitió la protección XSS mediante el uso del h método.

 <%= h @comment.text %>

los h Este método escaparía de HTML y JavaScript para garantizar que no se ejecutara ningún código malicioso del lado del cliente. Este método funcionó muy bien, pero había un problema: tenías que recordar usar el h Método en todos los lugares donde se muestra la entrada introducida por el usuario. Si olvidó un solo lugar, entonces fue vulnerable a un ataque XSS.

En Rails 3, todas las entradas se escapan de forma predeterminada, lo que elimina la carga del desarrollador de tener que recordar escapar en todos los lugares donde pueda haber un código malicioso. Para aquellos momentos en los que desea permitir que aparezcan datos sin escapar en su vista, puede usar el crudo Método para decirle a Rails 3 que no escape los datos..

 <%= raw @comment.text %>

3. Nuevo motor de consulta

Rails 3 incluye un nuevo motor de consultas que facilita recuperar los datos que desea y le brinda más flexibilidad en el código de su controlador. Estos cambios se muestran en varios lugares, pero el caso más común es recuperar datos en su controlador. En Rails 2, podría usar el método de búsqueda para recuperar los datos que estaba buscando, pasando argumentos para especificar condiciones, agrupación, límites y cualquier otra información de consulta. Por ejemplo:

 @posts = Post.find (: all,: conditions => ["category IN (?)", categories],: limit => 10,: order => "created_on DESC")

encuentra las diez primeras publicaciones dentro de algunas categorías específicas ordenadas por el tiempo de creación.

En Rails 3, cada uno de los parámetros pasados ​​tiene su propio método, que se puede encadenar para obtener los mismos resultados..

 @posts = Post.where (["categoría EN (?)", categorías]). orden ("created_on DESC"). límite (10)

La consulta no se ejecuta realmente hasta que se necesitan los datos; por lo que estos métodos pueden incluso ser utilizados en múltiples declaraciones.

 @posts = Post.where (["categoría IN (?)", categorías]) if (condition_a) @posts = @ posts.where (['Approved =?', true]) else @posts = @ posts.where ( ['aprobado =?', falso]) fin

Este es solo un ejemplo simple, pero debería proporcionarle una idea de algunas de las formas en que esta nueva sintaxis puede ser más útil..


4. Correo electrónico más fácil

El módulo ActionMailer se ha reescrito para que sea mucho más fácil para su aplicación enviar correos electrónicos en Rails 3. Hay algunos cambios, pero aquí hay algunos de mis favoritos..

1. Configuración predeterminada

En Rails, un Mailer es una clase que puede tener muchos métodos, cada uno de los cuales generalmente configura y envía un correo electrónico. Anteriormente, tenía que configurar todos los parámetros para cada correo electrónico por separado en cada método.

 clase UserMailer < ActionMailer::Base def welcome_email(user) from "[email protected]" # other paramters end def password_reset(user) from "[email protected]" # other parameters end end

En Rails 3, puede especificar valores predeterminados que pueden sobrescribirse opcionalmente en cada método.

 clase UserMailer < ActionMailer::Base default :from => '[email protected]',: return_path => '[email protected]' def welcome_email (usuario) # no es necesario especificar desde el final del parámetro final

2. APIs más limpias

Las versiones anteriores de Rails requerían que enviase correos electrónicos utilizando métodos especiales que fueron creados dinámicamente por ActionMailer. Por ejemplo, si desea enviar el correo electrónico de bienvenida en el ejemplo anterior, deberá llamar al:

 UserMailer.deliver_welcome_email (@user)

En Rails 3, puedes llamar.

 UserMailer.welcome_email (@user) .deliver

Esto tiene más sentido semánticamente, y además le permite recuperar y manipular el Correo Objeto antes de entregar el correo electrónico..


5. Gestión de la dependencia

Una de las fortalezas del marco de Ruby on Rails es la gran cantidad de gemas disponibles para el uso de los desarrolladores. Ya sea que se trate de autenticación, manejo de transacciones financieras, manejo de archivos subidos o casi cualquier otra cosa, existe la posibilidad de que una gema exista para ayudarlo con su problema..

Sin embargo, pueden surgir problemas si sus gemas requieren otras gemas, o los desarrolladores están en diferentes entornos, entre otras cosas. Para ayudar a resolver este tipo de situaciones, Rails 3 agrega la gema Bundler para ayudar a administrar sus dependencias. Usar Bundler en Rails 3 es extremadamente simple; agregue una línea para cada gema que necesite en su Gemfile, un archivo incluido en la raíz de cada una de sus aplicaciones.

 gema 'authlogic'

Una vez que hayas incluido todas tus gemas, corre:

 instalación de paquete

y Bundler descargará y configurará todas las gemas y sus dependencias que necesita para el proyecto.

Bundler también le permite especificar ciertas gemas que solo se configurarán en ciertos entornos (desarrollo vs producción vs pruebas).

Estos son solo algunos de los muchos cambios incluidos en Ruby on Rails 3. Muchas de las API antiguas aún funcionan en Rails, incluso si han quedado en desuso, para facilitar la actualización. Entonces, si estás en la valla sobre si actualizar o no tu aplicación de rieles existente, hazlo!

Gracias por leer!