0

我正在使用现有的 Cucumber 和 Ruby 套件编写概念验证测试。我为之做这件事的公司有一个堆栈,其中包括 Java 和 DB2 等。

目前使用数据库的测试会降低我们的测试数据库,并且由于许多原因,我无法擦除数据库并用映像版本替换它。

我对使用事务策略清理数据库的想法很感兴趣,我正在考虑使用 database_cleaner gem。

似乎 database_cleaner 需要一个 ORM 才能使用。此时我无权访问架构,ActiveRecord 无法使用我的凭据访问它需要的内容。

两个问题:

  1. ORM 是否总是需要访问模式?
  2. 您是否总是需要 ORM 来使用事务策略清理数据库?

如果有人知道可以与 ruby​​ 1.8.7(还没有 jRuby)、windows、DB2 等一起使用的 gem,那也是一个奖励。

4

1 回答 1

1
  1. ORM 是否总是需要访问模式?

架构?就像在数据库表和关系字段和索引的文本转储中一样?不。他们是否需要能够读取描述表及其关系的数据库内务数据?是的。这就是他们建立模型的方式。

  1. 您是否总是需要 ORM 来使用事务策略清理数据库?

哎呀,不。假设它支持事务,您可以对它进行所有老派的操作并将其写入特定 DBM 的 SQL 中。ORM 只是让它更便携,通常更容易编写,因为您依赖它来知道如何生成适当的 SQL。

我喜欢我的 ORM 的Sequel,因为如果我坚持,我可以使用原始 SQL,否则我可以将它与“数据集”或完整模型和有关它们的关系信息一起使用。另外,它生成了非常好的 SQL,我可以很容易地检查它。我强烈推荐它。

Active Record随 Rails 一起提供,因此可能是 Ruby 中最常用的 ORM。这并不意味着它是最好的,这是一个见仁见智的问题,但它很常见。Active Record 不是孤立于 Rails 使用的;您也可以将它与常规 Ruby 应用程序一起使用,尽管这有点像逆流而上。我过去使用它来将 Ruby 绑定到一个遗留数据库,没有 Rails 层,它工作得很好。

好久没用过DataMapper了,不过用的时候感觉还不错,推荐看看。每个人的大脑吸收数据的方式都不同,我们喜欢不同的 API,因此我们的 ORM 也多种多样,所以它可能会流入你的大脑,而其他人不愿意去。

于 2013-09-26T17:45:08.930 回答