【问题标题】:Can DataMapper still be used for Rails?DataMapper 还能用于 Rails 吗?
【发布时间】:2013-08-11 19:23:07
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 很好的答案,谢谢@Abe。我想我已经在ActiveRecord 之上成功实现了域模型/数据映射器模式。如果 Rails 支持这么简单的东西,那就太好了。 *耸耸肩*
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      DataMapper 改成 DataMapper2 再改成 ruby​​ 对象映射器。

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

      【讨论】:

      • 所以现在还不是一个可用的项目?
      • ROM 严重依赖多个 gem。开发人员通常在这些方面工作,而不是在 ROM 中
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        Ruby 主义者学习并尝试其他方法来使用 Ruby 开发软件非常重要。我们有 Padrino.rb、Grape、Rack 等等。

        【讨论】:

          猜你喜欢
          • 2021-04-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多