Ir al contenido

{ Archivos por etiquetas } ruby

Iterando por enumerables en Ruby

Hoy estaba haciendo unas cosas con una serie de listas de listas que contienen listas y me estaba encontrando con algún pequeño follón y he descubierto algo que no será para tirar cohetes pero me ha venido bien.


[ ['Triangulos', 1], ['Circulos', 2],['Cuadrados', 3] ].each { |fig,count| p “#{fig} aparece #{count} veces@}

No es gran cosa, pero el poder usar algo como |fig, count| en vez de |a| y tener que recurrir a a[0] y a[1], y aunque en este ridículo ejemplo quizás podría usarse un Hash en lugar del los Array como tuplas en mi caso sí que me ha ayudado a hacer un poquito más legible en código. No es gran cosa, pero algo ayuda.

También etiquetado

Pruebas en Ruby/Rails

Seguimos peleando intentando dar con la mejor manera para hacer pruebas, pero por ahora parece que el ganador está siendo la combinación de RSpec con rcov que te permite medir el depender de los fixtures en Rails estamos utilizando FixtureReplacement2, aunque por ahora no tengo claro cuál sería la mejor opción pero es un buen principio y no sería demasiado complicado cambiar las pruebas a otra librería u otra metodología.

Cuando tenga más rodado todo espero poder hablar más extensamente sobre ello, pero si alguien quiere decir algo puede animarse y contar sus experiencias

También etiquetado ,

DataMapper en Ruby

De un tiempo para acá estoy teniendo en cuenta DataMapper, un ORM para Ruby que tiene similitudes con Active Record pero se nota que es una librería posterior por muchos detalles. De las cosas interesantes que puede hacer hay algunas muy dignas de tener en cuenta.

  • Las actualizaciones parciales, que ya se encuentran disponibles en la nueva versión de Active Record en Rails 2.1
  • Actúa contra la base de datos con inteligencia, minimizando en lo posible el número de accesos a las tablas.
  • Las búsquedas son totalmente en Ruby, con lo que no hay que hacer extraños inventos para búsquedas complejas (en ActiveRecord hay que tocar el SQL para unir varias condiciones).
  • Es explícito. Al definir la clase también definimos los campos y el tipado de éstos. En ActiveRecord a veces me siento un poco desorientado ya que las propiedades de la clase se definen al conectar con la base de datos, en DataMapper se definen explícitamente en la clase.
  • Acceso directo. Si tenemos el modelo Post podemos hacer Post[3] en lugar de Post.find(3) y otras muchas más formas de encontrar lo que buscamos.
  • Paranoia. DataMapper incluye de serie el borrado lógico al definir una propiedad como property :deleted_at, ParanoidDateTime. La realidad es que casi siempre que borramos sólo queremos marcar como borrados, y que el ORM de serie incluya esta funcionalidad nos facilita mucho el trabajo. Con ActiveRecord puede conseguirse, pero no es lo mismo

No es oro todo lo que reluce y DataMapper todavía no está completo del todo (siguen trabajando en las relaciones entre objetos y algunas cosas más) pero la verdad es que para proyectos Ruby que no sean Rails puede ser una interesante opción, sobre todo si estamos probando algo como Merb con DataMapper.

También etiquetado ,