FixtureReplacement, la revancha!
January 6th, 2008
Hace tiempo hablamos de FixtureReplacement . En ese entonces tuve toda la intensión de utilizarlo, pero me encontré con un dilema. No soportaba namespaces. Le escribí el flaco que lo desarrlló, intercambiamos algunas líneas, y al mes me comentó la novedad: Finalmente soporta namespaces.
O sea que si ahora tenemos un modelo Admin::Rol, podemos especificar la factory de la siguiente manera:
module FixtureReplacement
attributes_for :admin_rol, :class => Admin::Rol do |rol|
rol.nombre = "Guarda"
rol.permisos << create_admin_permiso
rol.permisos << create_admin_permiso(:nombre => "Sonar Silbato")
end
attributes_for :admin_permiso, :class => Admin::Permiso do |p|
p.nombre = "Cortar Boletos"
end
end
Esto hace la práctica de BDD y TDD mucho más amena.
Más información aquí
User Registration Plugin para mephisto
November 21st, 2007
Para la PizzaConf armamos este plugin para registración de usuarios.
svn://svn.virtualizar.com.ar/projects/plugins/mephisto_reg/
Esta basado en el de feedback, corre en Mephisto Trunk y Rails Edge.
Es un buen startup para armar plugin de mephisto con la nueva arquitectura de plugins.
Temas a tener en cuenta:
Agregar a config/initalizers/custom.rb ActionController::Routing::Routes.reload! al final
Que estas haciendo con RoR?
October 2nd, 2007
En mi caso estoy en una empresa armando un plugin de Autorización basado en plugin de ModelSecurity con algunos cambios que necesito, como que se declaren los permisos en ActiveRecord y no en el código, que tenga auditoría y permita tambien aplicar permisos sobre ActionController. Lo enganche con acts_as_paranoid.
Un requerimiento importante es que solo sea autorización y no autenticación, montandose sobre un sistema de autenticación existente de forma transparente, solamente indicando el objeto que tiene el usario y el metodo para obtenerlo.
Tambien algunas modificaciones a in_place_controls para integrar el autorizador.
Antes de fin de año lo hare público.
Ustedes en que andan?
Acts_as_trackable Plugin
June 3rd, 2007
Este plugin fue escrito con la intención de llevar un tracking de cambio de estados en modelos.
El codigo esta escrito en ingles pero los comentarios y los specs son bilingües ingles/español Es compatible con acts_as_state_machine
Si tienes un modelo que va cambiando de estado a través del tiempo y quieres rastrear esos cambios, este plugin te lo facilita.
El uso es simple:
class Orden < ActiveRecord::Base
acts_as_trackable, :track_method => :estado
end
Indicando :track_method le estaremos diciendo que metodo nos devolvera el estado de la instancia de nuestro modelo y en el before_save si es distinto del anterior se creara un nuevo track.
Fue desarrollado utilizando rspec aqui van los specs:
describe "Cuando genero una order. When an order is created" do
before(:each) do
@order = Order.new(:customer=>"Capitan Piluso",:state=>"created")
end
it "Deberia tener un track asociado cuando se graba. Should have a new track associated" do
@order.should have(0).tracks
@order.save
@order.should have(1).tracks
@order.tracks[0].should be_an_instance_of(Track)
end
it "Deberia guardar la instancia serializada en track. Should save the instance serialized" do
@order.save
@order.tracks.last.retrieve_old_instance.should be_an_instance_of(Order)
end
end
describe "Cuando cambia el estado de una order existente. When an order state is changed" do
before(:each) do
@order = Order.create(:customer=>"El Manosanta",:state=>"created")
@order.state = "shipped"
@order.save
end
it "Deberia crear otro track. Should create another track" do
@order.should have(2).tracks
@order.current_track.state.should == "shipped"
@order.tracks.first.state.should == "created"
end
end
describe "Con varios tracks. With several tracks" do
fixtures :orders
it "deberia poder recuperar la instancia de order en otro momento, should retrieve an old instance of order" do
@order = orders(:created_1)
@old_order = orders(:created_1)
@order.customer = "Dentaduras Sonria Ya"
@order.state = "shipped"
@order.save
@order.state = "returned"
@order.save
@order.tracks[0].retrieve_old_instance.should eql(@old_order)
@order.tracks[1].retrieve_old_instance.should !eql(@old_order)
@order.tracks[1].retrieve_old_instance.should eql(@order)
end
end
Lo pueden encontrar en
svn://svn.virtualizar.com.ar/projects/plugins/acts_as_trackable/
Aqui escribi un artículo sobre BDD y rspec, el código esta outdated, pero el concepto esta bien. BDD – La evolucion natural del TDD
Esperamos les sea de utilidad
El plugin más chico?
May 15th, 2007
Muchas veces nos sirve saber cual es la versión o release que tenemos en producción y no queremos hacer un svn info, asi también nos puede pasar que cuando algo no anda bien queremos estar seguros de que estamos corriendo el ambiente esperado.
Este plugin, mal nombrado “acts_as_releaseable” nos agrega en nuestro html un comentario con la revisión de svn que esta corriendo y el environment sin tener que hacer un ssh.
Si no usan subversion o capistrano para subir los releases de su aplicación, no tiene ningún sentido ;-)
svn://svn.virtualizar.com.ar/projects/plugins/acts_as_releaseable
La utilización es simple, en nuestro/s layout donde más nos guste, ponemos <%= release %>
Le agregarían algo mas, como lo mejorarían?
Espero les sea de utilidad.


