DataMapper仍然可以用于Rails吗?

时间:2013-08-09 19:03:36

标签: ruby-on-rails ruby ruby-on-rails-4 datamapper ruby-datamapper

我希望在Ruby on Rails项目中为我的模型使用更独立的系统。看起来解决方案是DataMapper。但是,我看到他们的存储库在去年都没有更新过,当安装在Rails 4项目中时,它与新版Gems有宝石版依赖冲突。使用Rails 4时,搜索不会显示任何内容。

现在的状态是什么?我应该使用它还是别的什么?

5 个答案:

答案 0 :(得分:29)

作为每天在我的工作中使用DataMapper的人,我建议坚持使用ActiveRecord,除非你连接到你不控制模式的遗留数据库(但我也会考虑Sequel是这样的)。除了它是EOL(作为维护者stated on the mailing list)之外,许多需要模型持久性的宝石将支持ActiveRecord,但它们很少支持DataMapper,所以期望自己实现支持。根据我的经验,如果我发现了一个错误,我知道由于DataMapper的使用/放弃率低,我自己也必须自行解决。

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

如果您查看相关DM宝石的release-1.2分支,您可以看到它每隔一段时间就会进行一次小更新。然而,有数百个问题积压across the DataMapper gems,许多超过2年的问题根本无法解决,因为没有足够的DataMapper维护者(我不会责怪他们想要继续工作)一些新东西!)。

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

gem 'dm-core', git: 'git://github.com/datamapper/dm-core.git', branch: 'release-1.2'

答案 1 :(得分:12)

如果你正在考虑使用DataMapper,你真的应该看一下Sequel,FWIW我将从ActiveRecord转移到Sequel。

但是,如果你喜欢固执己见的Rails意识形态,那么你不应该看看ActiveRecord的最小摩擦。

没有不尊重Rails社区和开发人员的辛勤工作,但是在处理范围,关联条件,关系与关联,嵌套属性,记录初始化,基于字符串的排序子句,搜索字符串,哈希和arel的演变之后,无法轻松表达和撰写查询或有效地重复使用范围,相关模型错误的验证,父母与子女协会建立的怪异,糟糕的文档以及没有一个很好地凝聚在一起,你可能也决定转向一个明显更好的想法ORM喜欢续集。

同样地,您可以看一下Rails的意识形态(毫不掩饰地表达自己的意见),并考虑如果您更喜欢在现代Web框架中选择和概念上更清晰的方法,那么哪些更适合。 Rails 4对我来说是最后一个借口,你好Sinatra / Padrino / Sequel,Postgres / Redis / Solr和Backbone / Marionette / Eco / Coffeescript ......我自以为是的网络开发框架:)

答案 2 :(得分:4)

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

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

答案 3 :(得分:3)

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

可在此处找到https://github.com/rom-rb/rom

答案 4 :(得分:1)

在Ruby中实现DataMapper解耦还有另一个宝石。它叫Datamappify

另一个不错的项目正在开发中并需要帮助:Virtus,rom-rbSequel(已在此主题中提及)。

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