Tag Archives for RubyonRails

Lista de las 300 características del nuevo Mac OS X 10.5

En la página de Mac podemos encontrar una explicación de las 300 nuevas características que trae Mac OS X Leopard. Muy interesante ya que vienen detalladas por categorías.
Todas son muy interesantes, pero las que he encontrado especialmente interesantes son:

  • Ruby on Rails preinstalado y funcionando. Genial para los desarrolladores de esta web Framework.
  • Mejor compatibilidad para escritura / lectura en FAT32. Esto permitirá usar discos externos de backup formateados en FAT32.


Lista 300 nuevas características

Capistrano 2.1


Aún no soy usuario de esta herramienta para actualización en masa de aplicaciones Rails. Pero es una de mis asignaturas pendientes. Es por ello que hago eco de esta noticia en la que ha sido lanzada la versión 2.1 con interesantes novedades y correcciones respecto las anteriores. Por lo que he leído era una actualización muy esperada.

Riding Rails | Capistrano 2.1

Instalación y desarrollo profesional con Rails en Mac

Hasta la semana pasada aún no me había puesto a desarrollar en entorno Mac con Ruby on Rails. Hasta ahora lo hacía usando Windows con Parallels.

Realmente ha sido una experiencia muy satisfactoria migrar y aunque voy a invertir en algo de software( inversión mínima) la experiencia vale la pena. Sin duda Mac hace honor también al desarrollo en esta Web framework.

Para empezar me conecté al IRC #RubyonRails para preguntar a los desarrolladores que hay por allí cual era la mejor opción. Me aconsejaron unánimemente que cogiese el camino algo más complicado de compilar Rails y todos los elementos en el Mac. Para ello me dieron el siguiente enlace que hay que seguir a pie de letra. Y funciona…

Tras seguir este procedimiento tendremos Ruby, Rails, MySQL, Mongrel y SVN instalados nativamente en nuestra máquina. ¿ Cual es la ventaja principal?: Básicamente al tener una instalación nativa tendremos una instalación más limpia y a la equivalente que podríamos tener en un sistema Linux. Permitiéndonos utilizar herramientas como Capistrano y otros para gestionar nuestros servidores.

Existen otras alternativas como instalar Locomotive o otros procedimientos como MacPorts. Del primero me dijeron que era ideal si tan sólo querías probar rápidamente Ruby on Rails.

De aquella charla saqué claro otros elementos interesantes a tener en cuenta. A continuación los enumero:

  • Textmate: Editor por excelencia para Mac. Lo he estado probando y realmente funciona de maravilla y tiene unos Bundles geniales para desarrollo en Rails.Es de pago pero creo que vale la pena si quieres ser muy productivo.
  • iTerm: Sustituto de la terminal de Mac que funciona muy bien. Es lo primero que me recomendaron instalar.
  • svnX: GUI para SVN que funciona muy bien. Me gusta mucho más que Tortoise SVN para Windows.
  • MySQL GUI Tools: Los había probado en la versión Windows, pero funcionan muy bien también en Mac.
  • Colloquy: Cliente IRC para Mac que funciona muy bien.
  • Transmit: Cliente FTP que va muy bien. Es de pago pero vale la pena también.

He añadido una lista con todos los enlaces en L-exp. Espero que os sea de utilidad y a partir de hoy ya puedo decir que soy un verdadero Maquero. ¿Alguien me quiere comprar una licencia de Windows XP? (Es broma)

Rails 1.2.5 : Release de seguridad y mantenimiento

829F3B4A-9226-456E-AFAD-4D4A3F73475E.jpgAcaban de anunciar el lanzamiento de una nueva versión de la rama 1.X que corrige algunos defectos y un problema de seguridad para los que usen JSON. Es recomendado instalársela sobre todo si utilizamos JSON.

Lista de cambios( en inglés):

  • acts_as_list: fixed an edge case where removing an item from the list then destroying the item leads to incorrect item positioning
  • deprecated calling .create on has_many associations with an unsaved owner (like post = Post.new; post.comments.create)
  • backport array and hash query parameters
  • fix in place editor’s setter action with non-string fields
  • updated config/boot.rb to correctly recognize RAILS_GEM_VERSION

Para actualizar , `gem install rails`, poner RAILS_GEM_VERSION a ‘1.2.5’ en config/environment.rb, y `rake rails:update:configs`.

RAILS 1.2.4 disponible

Efectivamente, hace dos días DHH anunciaba la preview de Rails 2.0 y también que existiria una última versión 1.2.4 que incluiría algunas correcciones y además más mensajes de “deprecation”. Es decir, temas que se tienen que actualizar antes de pasar a Rails 2.0.

Para instalarla simplemente desde la cónsola de Ruby tenemos que utilizar el siguiente comando:

gem install rails –include-dependencies

La he podido probar y sin ninguna incidencia.

Libro gratuito sobre Ruby on Rails para descargar

Desde el blog de Ruby on Rails anuncian la disponibilidad durante 60 días de la descarga de un libro sobre Ruby on Rails de unas 400 páginas en PDF. El libro es de Patrick Lenz’s y tras registrarnos nos podremos descargar una copia (20 MB).

Las malas lenguas dicen que lo regalan porque van a sacar pronto una versión adaptada a Rails 2.0. De todas formas he leído buenos comentarios.

El libro está en inglés y tras ojearlo parece interesante.

Rails 2.0 preview ya está aquí

DHH ha anunciado que ya podemos instalarnos ( a través de SVN) la versión Preview de Rails 2.0. A todos nos ha cogido por sorpresa y antes de lo que nos esperábamos.

Ha comentado que antes del lanzamiento de 2.0 saldrá la versión 1.2.4 que será la última y contendrá los “deprecation warnings” para ayudar a migrar a 2.0.

Principales novedades de la 2.0( podéis ver las explicaciones completas en):

Action Pack: Resources

Han mejorado el sistema REST para permitir el uso de namespaces y eliminan el uso del punto y coma en las rutas para usar la barra normal.

Action Pack:Multiview

Nuevo formato de vistas con nueva nomenclatura que se pasa a llamar con la forma action.format.renderer. Por ejemplo show.erb, edit.iphone.haml o index.atom.builder.

Action Pack:Record identification

Permite convertir autómaticamente clases del modelo en rutas. redirect_to(person)

Action Pack:HTTP Loving

Han añadido un módulo para trabajar con HTTP basic Authentification. Muy sencillo.

También una mejora restructuración de los ficheros javascript permitiendonos separarlos en muchos ficheros y al añadir javascript_include_tag(:all, :cache=>true) lo convierte automáticamente en un sólo fichero con todo el javascript llamado all.js.

Action Pack: Security

Mejoras en seguridad para evitar ataques CRSF y XSS. También soporte para HTTP only cookies que aún no están en todos los navegadores.

Action Pack: Exception handling

Han mejorado el sistema de excepciones con la clausula rescue_from que nos permite controlar mejor las acciones.

Action Pack:Miscellaneous

Es más fácil crear Atom feeds utilizando la syntax del Builder. Se han hecho mejora de rendimientos. Además se ha quitado el in_place_editor y autocomplete_for.

 

Active Record: Performance

Creo que esta es la mejor novedad ya que realizan cache de SQL para evitar enviar la misma consulta repetidas veces. Aquí podremos ver grandes mejoras de rendimiento.

Active Record:Sexy Migrations

Alternativa para crear migraciones que permite crear varíos campos del mismo tipo a la vez.

 

Active Record:XML in, JSON out

Se ha añadido deserialización con Xml. Simplemente haciendo Person.new.from_xml(”David”) conseguiremos lo que esperamos. Se ha añadido serialización a JSON.

 

Active Record: Shedding some weight

Para hacer Active Record más pequeño se ha eliminado acts_as_XYZ y se han puesto como plugins individuales en repositorio SVN de Rails. Tan sólo hay que instalarlo como un plugin y ya está.

También han quitado todos los adaptadores de las base de datos comerciales y los han convertido en gems. Rails ahora sólo lleva MySQL , SQLite y PostgreSQL.

Esto permitirá que se puedan desarrollar mejor estos adaptadores propios y además el añadir nuevos.

Active Record: With_scope

Como ya lo habían anunciado hace tiempo ha pasado el with_scope a protegido y no podrá ser usado en controladores. Especialmente en filtros. En su lugar podrá ser ussado en los modelos que es para donde se diseño. Siempre podrá ser utilizado fura del modelo con .send(:with_scope)

 

ActionWebService out, ActiveResource in

Es conocido que Rails apuesta por Rest en lugar de SOAP. Siempre podremos utilzarlo añadiendo el gem.

También han pasado la nueva ActiveResource framework beta al núcleo. ActivResource es como ActiveRecord, pero para recursos.

 

ActiveSupport

Pocos cambios como el método Array#rand para tomar un elemento aleatorio de una matriz, Hash#except para filtrar un hash.

 

Action Mailer

Se han corregido errores y pequeñas mejoras.

Rails: The debugger is back

Vuelve el breakpoint en forma de debugger. Es un debugger real ya que puedes avanzar y retroceder. Habrá que instalar un gem llamado debugger y arrancar el servidor –debugger o -u. Directamente desde la terminal podremos utilizar el comando, no hará falta el script/breakpointer. El debugger se podrá usar en los test también.

 

Rails: Clean up your environment

Antes de 2.0 poníamos toda la configuración en Environment.rb. Ahora podemos añadir ficheros en config/initializers y se cargarán automáticamente. Las nuevas aplicaciones Rails 2.0 vendrán con dos ejemplos de inflexiones y mime_types para tus propios tipos de MIME.

 

Rails: Easier plugin order

Para garantizar el correcto funcionamiento de los plugins ahora puedes decirle que plugins quieres que se carguen primero.

And hundreds upon hundreds of other improvements

Estas son las principales novedades, pero solo es la superficie de mucho trabajo que se ha hecho.

 

Como actualizar

Primero tendremos que movernos como mínimo a Rails 1.2.3. Corregir todos los warnings de deprecation.

Para instalar la relaease preview a través de gems:

gem install rails –source http://gems.rubyonrails.org

Para probarlo desde SVN tag:

rake rails:freeze:edge TAG=rel_2-0-0_PR

 

 

Esto se trata de una preview para ir probando nuestras aplicaciones y viendo los nuevos defaults. En una semana empezarán con los Release Candidates ( los que hagan falta).

En definitiva se vienen buenos cambios y tengo ganas de probar el rendimiento de estos. Llevan seis meses trabajando con ellos y al fin han llegado.

Os recomiendo que os miréis los comentarios del anuncio ya que explican más novedades y enlazan a explicaciones.

Otros enlaces:

Agradecimientos de DHH al equipo

Nuevos gem Adapters disponibles

Anuncio DHH

Optimizando una aplicación Rails

Recientemente he tenido que enfrentarme al problema de optimizar mi aplicación Rails ( L-exp). El echo es que la carga de una determinada vista me llegaba a tardar más de un minuto. Realmente te quedas bastante frustrado cuando ves que te pasa esto.

Lo primero en pensar es que como Ruby on Rails está desarrollado en Ruby y este es un lenguaje Script. Pues que será lento y que hasta aquí hemos llegado.

Tras profundizar un poco se me ocurren dos caminos a seguir.

El primero analizar la base de datos para detectar problemas de índices. Es decir que se hagan consultas que no utilicen índices y por tanto sean lentas. Para ello utilizo un plugin para Rails llamado Query Analyzer. Este te muestra en el log a que datos acceden y si está utilizando índices. Así puedes detectar consultas complejas e ir optimizando las tablas. Se trata de ir añadiendo índice que contengas los campos por los cuales ejecutamos el query.

Gracias a este proceso detecté varios índices que faltaban y los añadi. Pude comprobar que un query que duraba casi un minuto pasó a durar menos de un 1 segundo.

En paralelo hice la segunda optimización que había leído por alguna parte que era la de utilizar el hash include en las llamadas a la base de datos( find(:all, :include =>”)). La idea es que en vez de hacer muchas consultas, si tiene tablas relacionadas hace una gran consulta trayendo todos los datos de las tablas relacionadas.

Tras acabar de hacer las consultas note una gran mejoría en las listas cortas, pero sin embargo las grandes tardaban mucho.En especial una lista ( Find all the google products and services) que llama a 67 recursos que me tardaba más de un minuto. Entonces…. ¿ donde me he perdido?

El echo es que tras varíos dias dándole vueltas me di cuenta que había cometido un error importante al usar ambos métodos a la vez. Optimizar los índices siempre es bueno ya que es el acceso a la base de datos es acelerado. Este es prioritario y se debe hacer siempre. Mi error fue utilizar el segundo método en consultas que traen muchos datos. Imagino que en estos casos cuando interroga la base de datos y guarda todo en memoria hace que la máquina gaste mucha memoria y CPU siendo poco efectiva para consultas con muchos datos.

Por tanto tan sólo tuve que quitar la optimización de includes y la lista más larga pasó a tardar pocos segundos. Algo impresionante.

Por tanto la moraleja de la historia es: ” Índices, Índices, Índices, ……”

Y el problema en mi caso no era de Rails sino de la base de datos que no la tenía optimizada.

Os adjunto una lista con los plugins que suelo utilizar: Rails plugins

Netbeans ide 6.0 beta 1 Screencast

Acabo de hacer un Screencast sobre esta nueva beta de este editor que ahora soporta Ruby y Ruby on Rails.

Al pasarlo a YouTube me lo ha comprimido mucho y no se ve perfecto. Pero seguro que suficiente para haceros con una idea. Además es el primero…..

Creo que de esta forma tendréis una visión más clara de lo que es.

 L-exp: Ruby on Rails Editors

Guia de seguridad para Ruby on Rails

Interesante guia online que podemos ver todos los detalles sobre la seguridad en nuestras aplicaciones desarrolladas en Ruby on Rails. Tratan todas las temáticas, desde autentificación, SQL Injection, Spam, Cross Site, seguridad, etc….

Muy interesante y además muestra enlaces a otros recursos y  plugins.

 

Vía