REST.convencidos += 2
Publicado por Román González 13 Agosto 2007 en General, Ruby, Rails. Etiquetas: Rails, rest, ruby. english • españolSon muchas las veces en que nos hemos puesto a discutir Aníbal, Edgar y yo acerca de si "REST es, o no es". Desde el principio estuve dispuesto a probar el concepto con la implementación de Rails y debo admitir que al final me gustó como se organizan los modelos con sus controladores, creando así los recursos.
Edgar por otro lado no dice que eso este mal, el problema es que se rompe el concepto de CoC por que tienes que estar modificando cada rato el archivo routes.rb y esto tan tedioso como volver a los tiempos de struts-config.xml (SUSTO!).
Ya no me empezaba a cuadrar la cosa cuando oías a Edgar gritar desde su oficina que REST era ronchoso por X o Y, de cualquier forma seguimos usando REST en la implementación de nuevos proyectos para estar convencidos de que "REST no es".
Un dia trabajando en la autenticación y permisología de una aplicación, el cliente quería restringir los recursos para que los usuarios tuvieran privilegios de sólo lectura, o lectura-escritura. Pues Aníbal y yo estabamos claros de que esta implementación no iba a ser rápida (creación de tablas de permisología y un manejo tedioso de condiciones).
Entre tanto brainstorming y propuestas nos dimos cuenta que la arquitectura REST ya organizaba todo de una manera sencilla, dado que manejabamos recursos que siempre tienen las acciones show, edit, update, new, create, destroy, list; la organización de lectura o escritura ya estaba lista! Los de lectura son las acciones show, index y list, y los de escritura son el resto de las acciones new, edit, update, create, destroy. Al usar el plugin de restfull_authentication. La implementación fue algo tán sencillo como:
resource = controller_name.underscore.split('_').first
action = action_name.downcase.to_sym
if [:destroy, :update, :create, :edit, :new].include?(action)
current_user.can?(:write, resource)
elsif [:show, :index, :list].include?(action)
current_user.can?(:read, resource)
end
end
Si es cierto que REST en Rails pone el trabajo tedioso en la configuración de la aplicación, esta clase de beneficios son lo que hacen que REST gane sus puntos, tanto Aníbal como yo quedamos convencidos que si esta concepción de REST no es la implementación final en el framework Rails, "REST es".
Como queda entonces la configuracion?
En acegi es medio tedioso, los e proque recien ahora estamos haciendo algo y con los roles y el wiring he escuchaod varios gritos x alli...
Salu2
Que tal.
Es curioso pero discrepo de mi tocayo xD. A mí sí me gusta REST, es mágico! :O
Como recomendación, para el manejo de permisos es más fácil usar el plugin acl_system [1] ya que queda perfecto con restful_authentication.
Saludos ;)
[1] http://opensvn.csie.org/ezra/rails/plugins/dev/acl_system2/