Archivos por la Categoría ‘Ruby’

Razones para amar a Ruby

Viernes, Febrero 12th, 2010


Para los que aun no se hayan metido mucho con el lenguaje Ruby, aquí les presento una lista de las cosas que te podrían convencer de que lo uses un poco más.

  1. Es orientado a objetos. Ruby proporciona las herramientas necesarias para cubrir los conceptos clásicos de los lenguajes orientados a objetos como el encapsulamiento, la herencia, el polimorfismo, etc. Además, a diferencia de otros lenguajes como C++, Ruby fue diseñado desde un inicio para ser orientado a objetos.
  2. Es completamente orientado a objetos. No es redundancia. Es simplemente que en Ruby, completamente todo es un objeto. Incluso los datos primitivos como enteros, flotantes y cadenas son objetos. Por ejemplo se puede hacer lo siguiente: 5.to_s para convertir el número 5 a cadena.
  3. Es un lenguaje dinámico. Para las personas que están más familiarizadas con Java o C++, este es un cambio conceptual muy grande. Esto significa que los métodos o variables pueden ser agregados en tiempo de ejecución. Es similar en este aspecto a los lenguajes como Python y PHP.
  4. Es un lenguaje interpretado. Esta puede ser un arma de doble filo. Muchos podrían decir que es más una desventaja, ya que provoca que la ejecución del programa sea más lenta con lenguajes interpretados. Pero yo le veo varias ventajas… por ejemplo, al desarrollar una aplicación con Java o ASP.NET, se vuelve cansado el ciclo de modificar-recompilar para ver las modificaciones realizadas. En cambio con Ruby sólo modifico algo y se ve al instante el cambio realizado. Además de que si se necesita mayor velocidad para ciertas cosas, siempre se puede recurrir a programar esas partes en C.
  5. Entiende expresiones regulares. Por años este tema fue considerado del dominio único de UNIX, pero con Perl las cosas cambiaron y ahora Ruby está ayudando a seguir con ese cambio. Cada vez más gente se va dando cuenta de las ventajas que las expresiones regulares proporcionan para la manipulación de texto en nuestros programas.
  6. Es multiplataforma. Se ejecuta en las principales plataformas de hoy en día, como son Windows, MacOS, Linux e incluso en MS-DOS.
  7. Es una derivación. Ruby ha tomado cosas de otros lenguajes como Smalltalk, Lisp, C, C++, Perl y otros. Como Isaac Newton dijo alguna vez: “Si he visto más allá que otros, es porque he estado sobre los hombros de gigantes”. Ruby definitivamente ha hecho esto al basarse en esos lenguajes y ha logrado una mezcla excelente.
  8. Tiene un recolector de basura inteligente. Como la mayoría de los lenguajes modernos, ya cuenta con un componente que nos ayuda a olvidarnos de las rutinas de asignar y desasignar memoria.
  9. Es open-source. no hay que pagar por el uso de licencias y además puedes tener acceso al código y ver cómo está programado.
  10. Es intuitivo. Al principio puede parecer un poco extraña la sintaxis, pero una vez que la comprendes, verás que es muy fácil e intuitivo programar con Ruby. Es muy similar a un idioma humano.
  11. Tiene manejo de excepciones. Como Java y C++, Ruby entiende el concepto de excepciones. Esto significa que no tenemos que preocuparnos por códigos de error sin sentido y repercute en un código más claro.
  12. Tiene una clase Array. Los arreglos son dinámicos, por lo que no es necesario declarar su tamaño desde el inicio. No es necesario asignar memoria tampoco. Son objetos y por lo tanto tienen sus propias propiedades y métodos para la manipulación de su contenido.
  13. manejo de símbolos y mayúsculas de forma creativa. Un método que regresa un valor booleano normalmente termina en un símbolo de interrogación (por ejemplo: nil? o empty?); los métodos que modifican o destruyen datos terminan con un símbolo de exclamación (por ejemplo: clear!). Todas las constantes y los nombres de clases empiezan con letras mayúsculas. Todos los atributos de los objetos inician con el símbolo @. Simple, informativo e intuitivo.
  14. Permite iteradores. Entre otras cosas, permite pasar bloques de código de tal forma que el block es llamado por cada uno de los elementos del arreglo, lista, árbol o lo que sea.
  15. Gran atención a los detalles. Abundan los sinónimos para los métodos o propiedades. Si no recuerdas cuál usar entre size o length para una cadena o arreglo, pues usa cualquiera, ambos funcionan. Para los rangos, puedes usar begin y end o first y last. Y así en otros casos.
  16. Sintaxis flexible. Los paréntesis para las llamadas a métodos pueden ser omitidos, así como tambián las comas entre cada uno de los parámetros. La palabra reservada return puede ser igualmente omitida.
  17. Tiene un gran conjunto de librerías. Tiene soporte para hilos, sockets, persistencia de objetos, programas CGI, bases de datos y mucho más. Incluso igual hay soporte para librerías de gráficos de usuario como Tk, WxWidgets, Gtk, Qt y muchos más.
  18. Es un lenguaje conciso. No hay el uso de palabras extras como begin y then para despues de un if como en el caso de Pascal. Las variables no necesitan ser declaradas, los tipos de retorno no tienen que ser especificados para los métodos, y como ya dijimos anteriormente, el return puede no ser especificado, se tomará como valor de retorno la última expresión evaluada.
  19. Tiene sobrecarga de operadores. Esta característica que hizo tan popular C++ y luego ha sido implementada en lenguajes como C#, es muy útil para mejorar la lectura y la intuitividad de nuestro código. En lenguajes como Java que no cuentan con esta característica, para sumar dos variables de tipo BigDecimal es necesario hacer algo como num1.add(num2) cuando lo más lógico sería algo como num1 + num2; pues este tipo de expresiones las permite Ruby gracias a la sobrecarga de operadores.
  20. Por último pero no de menor importancia, es la magnífica librería Ruby on Rails que permite desarrollar aplicaciones web de la forma más fácil que he visto hasta ahora.

Bueno, esta es mi lista de las cosas que me gustan de Ruby, talvez he omitido algunas que no son tan obvias o que no me vienen a la mente en este momento, pero al menos espero que la lista cumpla el objetivo de que las personas que no conocen mucho el lenguaje puedan empezar a encariñarse con él.

Página con links a videos de Ruby

Viernes, Febrero 12th, 2010

Buscando información de Ruby por internet me encontré con este magnífico sitio que contiene enlaces hacia videos relacionados con Ruby.

Actualmente contiene más de 500 links a videos, por lo que vale la pena visitarla, ver los videos y hasta hacer algunas aportaciones.

http://www.rubytu.be/

jQuery con Rails 3

Viernes, Febrero 12th, 2010

Una de las características nuevas en Rails 3 es que permite de manera más sencilla poder definir los diferentes componentes de nuestra aplicación. Por ejemplo, ya no tendremos que hacer tanta magia para poder utilizar otra que no sea Prototype como librería Javascript, si no que ahora igual podremos utilizar jQuery con un poquito de configuración.

Lo primero que tendremos que hacer es con respecto al Javascript no obstructivo (UJS por sus siglas en inglés). El equipo de desarrollo de Rails 3 ha hecho un gran trabajo al reemplazar todo el código JS en línea con UJS y XHTML semántico; el detalle es que sigue siendo Prototype la librería por default

Para cambiar eso debes descargar y reemplazar el archivo public/javascript/rails.js desde github en la página del proyecto de jQuery UJS.

El siguiente paso sería la sentencia javascript_include_tag a todos nuestros layouts. Si ya has usado jQuery con Rails anteriormente, debes haber hecho algo como esto:

javascript_include_tag 'jquery', 'jquery-ui', 'rails', 'application'

Pero si tienes más de un layout y quieres adherirte al principio DRY (Don’t repeat yourself, no te repitas a ti mismo), entonces lo ideal sería poder hacer algo como lo que se hace con Prototype:

javascript_include_tag :defaults

Para lograr esto, es necesario modificar el archivo config/application.rb debes agregar una expansión Javascript como la siguiente

ActionView::Helpers::AssetTagHelper.register_javascript_expansion \
:jquery => %w/jquery jquery-ui rails application

De esta manera, podremos incluir nuestras librerías con la siguiente línea:

javascript_include_tag :jquery

Lo cual es mucho más sencillo y rápido.

En artículos siguientes seguiremos explorando las características nuevas de Rails 3. Manténganse en contacto.

Liberada la primera beta de Rails 3.0

Lunes, Febrero 8th, 2010

El 5 de febrero fue liberada la primera beta de la tan esperada versión 3.0 de Rails. Esta nueva versión trae muchas mejoras y características nuevas respecto a la rama 2.0. Lo más sobresaliente podriamos decir que es la fusión con el framework Merb; lo que trae como beneficio que ahora los componentes del framework estén menos fuertemente acoplados entre sí, permitiendo poder elegir qué componente queremos por ejemplo en la capa de acceso a datos (ActiveRecord, DataMapper, Sequel) así como en las demás capas.

ActiveRecord, ActionController, ActionView, and ActionMailer, ActiveSupport todos han sido rediseñados, y además de que Rails 3 es compatible con Rack, los subcomponentes de Rails, como el enrutamiento, son middlewares de Rack.

Entre los principales puntos podemos mencionar también:

  • Un ruteador mejorado y nuevo que hace un énfasis en declaraciones tipo REST
  • Nueva API para Action Mailer modelado tomando como base el Action Controller
  • Nuevo lenguaje encadenable para Active Record construido basándose en álgebra relacional
  • Helpers de Javascript no intrusivos con manejadores para Prototype, jQuery y más
  • Control de dependencias explícito con Bundler

Si deseas ver todas las notas de la versión puedes hacerlo en este enlace.

Por mi parte, aun no me decido a migrar a la nueva versión de Rails el proyecto que estoy realizando, pero pronto lo haré así que los mantendré informados de mis aventuras con Rails 3.

Por cierto que para instalarlo, se necesitan ejecutar los siguientes comandos:

gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
gem install rails --pre

En busca del IDE/editor ideal para Ruby on Rails en Windows

Miércoles, Diciembre 30th, 2009

Después de probar con varios editores e IDE’s, he decidido que para mi gusto, el mejor es RubyMine, que se encuentra en la versión 2.0 y es desarrollado por la empresa Jetbrains, creadores del también excelente para Java, IntelliJ IDEA.

A continuación les explicaré las opciones que probé, y las razones por las cuales no me convencieron del todo.

Netbeans
Este es un excelente IDE políglota (es decir, que tiene soporte para varios lenguajes de programación). Actualmente se encuentra reción liberada la versión 6.8, cuenta con un desarrollo muy activo, es open source, existe para Windows, Linux y MacOSX… en fin, tiene todo para ser la opción ideal. Ofrece un soporte muy completo para el desarrollo de aplicaciones con RoR y en un principio fue mi opción ideal. Sin embargo, hay ciertas funciones específicas de Ruby on Rails que no tiene, pero eso lo explicaré más adelante cuando le toque el turno al ganador.

RadRails
Este igual es un software muy completo. Está basado en la plataforma de Eclipse, por lo que permite extenderse mediante plugins. Debo confesar que no he tenido mucha oportunidad de probarlo. Apenas lo descargué hace unos días pero por lo que he visto ofrece varias funciones interesantes para el desarrollo de RoR. También es gratuito al igual que el Netbeans. Posiblemente cuando salga la versión 3.0 (actualmente está en la 2.0) me dedicaré a probarlo con más tiempo.

E-TextEditor
Si tuviera que utilizar un editor de texto en lugar de un IDE, este sería el ganador. Es muy ligero, tiene una interfaz muy sencilla y atractiva y una gran ventaja es que ofrece los bundles (paquetes de segmentos de código) que son compatibles con el TextMate de Mac. De hecho, el E-TextEditor es una copia bastante fiel del TextMate, para que los usuarios de Windows (y se supone que próximamente igual los de Linux) puedan disfrutar de las ventajas que ofrece dicho editor.
La principal desventaja que le encontré es que te instala el cygwin para poder realizar ciertas tareas que no están disponibles de modo nativo en Windows; pero luego eso me ha provocado problemas con mi instalación normal de Ruby (c:\ruby). De no ser por esto, probablemente sería mi editor favorito. Otra desventaja pequeña es que no es gratuito, ya que hay que pagar una pequeña cantidad de 35.95 dólares por la licencia.

Komodo Edit
Es un buen programa, y aparte de haberlo utilizado para RoR igual lo he utilizado para desarrollar con Python/Django, pero se me hace un poco genérico. No digo que esto sea malo, simplemente que me gusta que mi editor/IDE tenga herramientas que me ayuden más al desarrollo con el lenguaje/plataforma que esté utilizando.

Además de los anteriores, también he utilizado en algún momento el Notepad, el VIM, entre otros, pero tampoco ninguno de estos me convenció lo suficiente.

Bueno, entonces seguro se preguntarán, ¿Porqué RubyMine? Ok, para empezar diré que tampoco es gratuito (tiene un costo de 99 dólares para una licencia comercial) aunque si se demuestra que se está trabajando en un proyecto open source, puedes obtener una licencia gratuita. Segunda, por el hecho de ser desarrollado con Java, es un poco más pesado que los editores de texto (cosa que no me perjudica con los 4 GB de RAM, pero puede ser problema para algunos). Otro pequeño detalle es que los programas de Java no muestran las letras de la misma forma que la plataforma nativa, por lo que ciertos tipos de fuentes podrían no verse de forma correcta o idonea.

Pero por el lado bueno, tiene muchas más ventajas que en su mayoría son pequeños detalles que hacen más placentero el desarrollo y que además opacan a los problemas citados anteriormente.

  • Como es un IDE desarrollado exclusivamente para Ruby y RoR no contiene más cosas de las necesarias.
  • Trae muchas opciones de configuración (apariciencia, estilo de código, resaltado de sintaxis, autocompletado, etc). Incluso permite configurar los accesos rápidos para las operaciones más comunes.
  • Proporciona soporte para manejar diferentes intérpretes y/o versiones de ruby, así como también los gems.
  • Ofrece soporte para ejecutar acciones de Rake desde el mismo editor.
  • Soporta diversos administradores de código fuente (CVS, Subversion, Git)
  • Trae varias opciones para refactorizar y reformatear el código.
  • Ofrece múltiples ayudas para el desarrollo de RoR, por ejemplo si estoy modificando uno de los controladores, mediante una combinación de teclas puedo moverme al archivo de la vista (el .html.erb) de la acción en la que me encuentre del controlador. También si estoy utilizando la localización de RoR para que mi aplicación esté en diferentes idiomas, RubyMine automáticamente busca en los archivos .yml del lenguaje utilizado para mostrar las cadenas en las vistas desde el mismo editor de texto.

Esas son algunas de las características que han hecho que me enamorara de RubyMine. Talvez no parezcan tan sobresalientes, y talvez alguien podría pensar que por el precio, sería mejor utilizar Netbeans o RadRails, pero ya en el momento en que estás desarrollando notarás que con RubyMine sufres menos interrupciones y tienes que preocuparte muy poco de detalles ajenos que no tengan nada que ver con la aplicación en la que estés trabajando. Creo que el slogan que tienen en su página es muy acertado: “RubyMine, el IDE más inteligente para Ruby”.

Cabe señalar que no es un artículo pagado por Jetbrains, simplemente es mi opinión y como tal, puede ser que la de ustedes sea diferente. En fin, no importa la herramienta que elijan siempre y cuando se sientan contentos con su uso y les permita un gran grado de productividad.

Disponible la versión 2.0 de Jetbrains RubyMine

Lunes, Noviembre 16th, 2009

Hoy fue liberada por fin la versión final 2.0 del editor más completo para desarrollo Ruby/Rails. Esta versión trae grandes mejoras comparada con la versión anterior. Con mi experiencia que he tenido con diferentes editores e IDEs, este ha sido mi favorito. También me ha gustado mucho E-TextEditor, pero aun no he logrado conseguirlo/compilarlo correctamente en Linux.

Las características sobresalientes que trae esta nueva versión son:

  • Soporte para las versiones más recientes: Ruby 1.9 y Rails 2.3.4.
  • Nuevos refactorings (introducir constante, introducir campo, introducir parámetro, variable inline, extraer módulo, extraer superclase, entre otros); incluso permite buscar código duplicado en el proyecto.
  • Pruebas más sencillas con Cucumber, Shoulda y Spec.
  • Construcción de páginas web con HAML y Sass.
  • Nuevas inspecciones de código y correcciones rápidas.
  • Soporte para internacionalización en Rails (i18n) y corrección de ortografía.
  • Extensión del IDE mediante secuencias de comandos en Ruby.
  • Usabilidad y estabilidad mejorada en la interfaz de usuario.
  • Integración continua con TeamCity.

Este es un gran avance para los IDEs de Ruby, el único detalle es que tiene un costo de $99 dólares, pero no es mucho comparado con todas las ventajas que ofrece.

Nueva librería para envío de correo electrónico para Ruby

Miércoles, Noviembre 11th, 2009

Aunque ya existen diversas formas de enviar correos por medio de Ruby, siempre es bueno tener más opciones. Actualmente existe el Net::SMTP, TMail y el paquete de Rails ActionMailer el cual internamente utiliza TMail. A estas opciones se les une una nueva llamada simplemente “Mail“.

Mail es una nueva librería que controla la generación, parseo y envío de correos y ofrece soporte para Ruby 1.9 completo. En la página hay muchos ejemplos para que veamos cómo funciona, uno de ellos se presenta a continuación:

Mail.defaults do
  smtp '127.0.0.1'
end
 
mail = Mail.new do
  from 'rbaeza@dsisweb.com'
  to 'prueba@hotmail.com'
  subject 'Correo de prueba'
  body File.read('mensaje.txt')
  add_file (:filename => 'imagen.png', :data => File.read('/archivo.png'))
end 
 
mail.deliver!

Como pueden ver, la sintaxis es muy clara y sencilla. Así que lo podemos considerar como una muy buena opción para enviar correos desde Ruby.