21

我希望在 Ruby on Rails 项目中为我的模型使用更加分离的系统。看起来解决方案是 DataMapper。但是,我看到他们的存储库在去年都没有更新,并且当安装在 Rails 4 项目中时,它与较新的 Gems 存在 gem 版本依赖冲突。在 Rails 4 中使用它时搜索不会出现任何内容。

它现在是什么状态?我应该使用它还是其他什么?

4

5 回答 5

29

作为在我的工作中每天都使用 DataMapper 的人,我建议坚持使用 ActiveRecord,除非您连接到您不控制其架构的遗留数据库(但如果是这种情况,我也会考虑Sequel )。除了它是 EOL(正如邮件列表中的维护者所述)这一事实之外,许多需要模型持久性的 gem 将支持 ActiveRecord,但它们很少支持 DataMapper,因此希望自己实现支持。根据我的经验,如果我发现一个错误,我知道由于 DataMapper 的使用率低/放弃率低,我也必须自己修复它。

正如 danmanstx 所提到的,维护人员现在主要关注 Ruby Object Mapper (ROM),它曾经是 DM2。尽管某些 ROM 功能完整,但它仍然没有 AFAIK 的发布日期(请参阅路线图)。

如果您查看release-1.2相关 DM gems 的分支,您会发现它确实会每隔一段时间进行一次小更新。但是, DataMapper gems中积压了数百个问题,其中许多问题已经超过 2 年了,因为没有足够的 DataMapper 维护人员(我不怪他们想要做某事)而根本无法解决新的!)。

你说得对,最新的 RubyGems 版本的 DM gem 有版本冲突。如果你想使用 DM 的最新稳定版本,我建议使用release-1.2你需要的 DM gems 的分支,例如

gem 'dm-core', git: 'git://github.com/datamapper/dm-core.git', branch: 'release-1.2'
于 2013-08-09T21:54:51.633 回答
12

如果您正在考虑 DataMapper,您真的应该看看 Sequel,FWIW 我将从 ActiveRecord 迁移到 Sequel。

但是,如果您喜欢固执己见的 Rails 意识形态,那么您不应该再看 ActiveRecord 以减少摩擦。

不尊重 Rails 社区和开发人员的辛勤工作,但在处理范围、关联条件、关系与关联、嵌套属性、记录初始化、基于字符串的排序子句、搜索字符串、哈希和 arel 的演变之后,无法轻松地表达和组合查询或有效地重用范围,验证相关模型错误,父子关联构建怪异,糟糕的文档并且没有一个很好地融合在一起,您可能也决定转向像 Sequel 这样经过深思熟虑的 ORM。

类似地,您可能会查看 Rails 的意识形态(不加掩饰地固执己见),并考虑如果您更喜欢现代 Web 框架中的选择和概念上更简洁的方法,什么可能更适合。Rails 4 对我来说是最后的欢呼,你好 Sinatra/Padrino/Sequel、Postgres/Redis/Solr 和 Backbone/Marionette/Eco/Coffeescript……我固执的 Web 开发框架 :)

于 2013-08-20T07:47:21.277 回答
3

DataMapper 更改为 DataMapper2,然后更改为 ruby​​ 对象映射器。

可以在这里找到https://github.com/rom-rb/rom

于 2013-08-09T19:17:41.817 回答
3

在我的工作中,我们遇到了很多关于 DataMapper 的问题。最终,经过大量研究并与开发人员交谈后,我意识到这是一个死胡同的项目。我在这里记录了我们决定放弃它的原因:

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

于 2014-02-12T10:29:49.270 回答
1

还有另一个 gem 可以在 Ruby 中实现 DataMapper 解耦。它称为Datamappify

另一个不错的项目正在开发中并需要帮助:Virtus、rom-rbSequel(已在此线程中提到)。

Rubyists 学习并尝试其他方法来使用 Ruby 做软件是很重要的。我们有 Padrino.rb、Grape、Rack 等等。

于 2013-11-21T12:50:47.300 回答