¿Se puede seguir utilizando DataMapper para Rails?


Estoy buscando usar 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 la gema con Gemas más nuevas. La búsqueda no genera ningún contenido al usarlo con Rails 4.

¿Cuál es su estado? ¿Debería usarlo o algo más?

Author: mydoghasworms, 2013-08-09

5 answers

Como alguien que usa DataMapper todos los días en mi trabajo, recomendaría apegarse a 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 indicado en la lista de correo ), muchas gemas que necesitan persistencia de modelo soportarán ActiveRecord, pero es muy raro que soporten DataMapper, así que espere implementar soporte a ti mismo. En mi experiencia, si encuentro un error, sé que también tendré que arreglarlo yo mismo debido al bajo uso / abandono de DataMapper.

Como mencionó danmanstx, los mantenedores ahora se centran principalmente en Ruby Object Mapper (ROM), que solía ser DM2. Aunque algunas piezas de ROM están completas, todavía no tiene una fecha de lanzamiento AFAIK (ver la hoja de ruta ).

Si nos fijamos en la rama release-1.2 de las gemas DM relevantes, se puede ver que recibe actualizaciones menores de vez en cuando. Sin embargo, hay un atraso 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 gemas DM que tienen conflictos de versiones. Si quieres usar la última versión estable de DM, te aconsejo usar la rama release-1.2 de las gemas DM que necesitas, por ejemplo,

gem 'dm-core', git: 'git://github.com/datamapper/dm-core.git', branch: 'release-1.2'
 29
Author: Abe Voelker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-09 21:54:51

Realmente deberías echar un vistazo a Sequel si estás considerando DataMapper, FWIW migraré de ActiveRecord a Sequel.

Sin embargo, si te gusta la ideología Rails obstinada, entonces no deberías buscar más allá de ActiveRecord para menos fricción.

Sin faltar al respeto al duro trabajo de la comunidad Rails y desarrolladores, pero después de tratar con la evolución de los ámbitos, condiciones de asociación, relaciones vs asociaciones, atributos anidados, registro inicialización, cláusulas de orden basadas en cadenas, cadenas de búsqueda, hashes y arel, incapacidad para expresar y componer consultas fácilmente o reutilizar alcances de manera efectiva, validación de errores de modelos relacionados, rareza en la construcción de asociaciones entre padres e hijos, documentación deficiente y ninguna de ellas se combina bien, también puede decidir mudarse a una secuela como OR claramente mejor pensada.

Del mismo modo, puede mirar la ideología de Rails (siendo descaradamente obstinado), y considerar lo que podría encajar mejor si prefiere elegir y un enfoque conceptualmente más limpio en un marco web moderno. Rails 4 fue el último hurra para mí, hello Sinatra / Padrino / Sequel, Postgres / Redis / Solr y Backbone/Marionette/Eco / Coffeescript ... mi marco de desarrollo web opinionated:)

 12
Author: Andrew Hacking,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-22 09:42:55

En mi trabajo nos encontramos con muchos problemas con DataMapper. Finalmente, después de mucha investigación y hablar con los desarrolladores, me di cuenta de que era un proyecto sin salida. Documenté las razones por las que decidimos abandonarlo aquí:

Http://opensourceame.com/why-we-abandoned-ruby-datamapper /

 4
Author: David Kelly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-12 10:29:49

DataMapper se cambió a DataMapper2 y luego se cambió a ruby object mapper.

Se puede encontrar aquí https://github.com/rom-rb/rom

 3
Author: danmanstx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-09 19:17:41

Hay otra gema para lograr el desacoplamiento de DataMapper en Ruby. Se llama Datamappify.

Otro buen proyecto está en desarrollo y necesita ayuda: Virtus, rom-rb y Sequel (ya mencionado en este hilo).

Es importante que los rubistas estudien y prueben otro enfoque para hacer software con Ruby. Tenemos a Padrino.rb, Uva, estante y así sucesivamente.

 1
Author: hlegius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-21 12:50:47