ruby on rails - que - ¿Se puede usar DataMapper para Rails?
ruby on rails guias (5)
Estoy buscando utilizar un sistema más separado para mis modelos en un proyecto de Ruby on Rails. Parecía que la solución era DataMapper. Sin embargo, veo que ninguno de sus repositorios se ha actualizado en el último año, y cuando se instala en un proyecto de Rails 4, tiene conflictos de dependencia de la versión de gema con gemas más nuevas. La búsqueda no genera ningún contenido sobre su uso con Rails 4.
¿Cuál es su estado ahora? ¿Debo usarlo o algo más?
DataMapper se cambió a DataMapper2 y luego se cambió a ruby object mapper.
se puede encontrar aquí https://github.com/rom-rb/rom
Deberías echarle un vistazo a Sequel si estás considerando DataMapper, FWIW. Migraré de ActiveRecord a Sequel.
Sin embargo, si le gusta la ideología de Rails con opiniones obstinadas, entonces no debe buscar más allá de ActiveRecord para una menor fricción.
Sin faltarle el respeto al arduo trabajo de la comunidad y desarrolladores de Rails, pero después de lidiar con la evolución de ámbitos, condiciones de asociación, relaciones vs asociaciones, atributos anidados, inicialización de registros, cláusulas de ordenamiento basadas en cadenas, cadenas de búsqueda, hashes y arel, incapacidad para expresar y redactar consultas fácilmente o reutilizar ámbitos de manera efectiva, validación de errores de modelo relacionados, asociación entre padre e hijo que crea rareza, documentación deficiente y nada de eso se combina bien, también puede decidir pasar a una ORM claramente mejor como Sequel.
Del mismo modo, puede mirar la ideología de Rails (siendo abiertamente obstinado), y considerar qué podría encajar mejor si prefiere la opción y un enfoque conceptualmente más limpio en un marco web moderno. Rails 4 fue el último hoorah para mí, hola Sinatra / Padrino / Sequel, Postgres / Redis / Solr y Backbone / Marionette / Eco / Coffeescript ... mi obvio marco de desarrollo web :)
En mi trabajo, nos encontramos con muchos problemas con DataMapper. Finalmente, después de investigar mucho y hablar con los desarrolladores, me di cuenta de que era un proyecto sin salida. Documenté las razones por las que decidimos abandonarlo aquí:
Hay otra joya para lograr el desacoplamiento de DataMapper en Ruby. Se llama Datamappify .
Otros proyectos interesantes están en desarrollo y necesitan ayuda: Virtus, https://github.com/rom-rb/rom y Sequel (ya mencionados en este hilo).
Es importante que los Rubyistas estudien y prueben otro enfoque para hacer software con Ruby. Tenemos Padrino.rb, Grape, Rack, etc.
Como alguien que utiliza DataMapper todos los días en mi trabajo, le recomendaría seguir con ActiveRecord a menos que se conecte a una base de datos heredada de la que no controle el esquema (pero también consideraría Sequel si ese fuera el caso). Más allá del hecho de que es EOL (como mantenedor declarado en la lista de correo ), muchas gemas que necesitan persistencia de modelo admitirán ActiveRecord, pero es muy raro que sean compatibles con DataMapper, por lo que se espera implementar el soporte por su cuenta. En mi experiencia, si encuentro un error, sé que también tendré que solucionarlo por mi bajo uso / abandono de DataMapper.
Como mencionó Danmanstx, los mantenedores se centran principalmente en Ruby Object Mapper (ROM) ahora, que solía ser DM2. Aunque algunas piezas de ROM son características completas, todavía no tiene una fecha de lanzamiento AFAIK (consulte la roadmap ).
Si miras la rama de la release-1.2
de las gemas de DM relevantes, puedes ver que recibe actualizaciones menores de vez en cuando. Sin embargo, hay una acumulación de cientos de problemas en las gemas de DataMapper , muchos de más de 2 años que simplemente no se abordarán porque simplemente no hay suficientes mantenedores de DataMapper (y no los culpo por querer trabajar en algo ¡nuevo!).
Tienes razón sobre las últimas versiones de RubyGems de las gemas de DM que tienen conflictos de versiones. Si desea utilizar la última versión estable de DM, le aconsejo que use la release-1.2
de las gemas DM que necesita, p. Ej.
gem ''dm-core'', git: ''git://github.com/datamapper/dm-core.git'', branch: ''release-1.2''