【问题标题】:RoR: efficiently testing a project with mysql and sqliteRoR:使用 mysql 和 sqlite 高效测试项目
【发布时间】:2011-07-09 05:42:41
【问题描述】:

我想不断测试和基准测试我在 mysql 和 sqlite 上运行的 RoR 应用程序,我正在寻找可以简化它的技术。理想情况下,我想要一些东西:

  • 同时使用 mysql 和 sqlite 版本的应用程序进行自动测试 / rspec 测试,所以我会立即知道我是否损坏了某些东西
  • 用于编写特定于 db 的代码的可靠结构,因为我需要偶尔进入 `ActiveRecord::Base.connection.select_all()`。

后者似乎容易,前者似乎困难。我考虑过拥有两个独立的源代码树,每个都有自己的特定于 db 的配置文件(例如 Gemfile、config/database.yml)并使用文件系统链接来共享所有常见文件,但这可能会使 git 感到害怕和困惑。

更简洁的方法是使用命令行切换到 rails 来说明要使用哪个配置作为 rails 启动。虽然很好,但我认为这样的命令行开关不存在

其他人如何处理这个问题?

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-3 sqlite configuration


    【解决方案1】:

    如果我是你,我会做两件事:

    1. 不要将 database.yml 检查到您的代码仓库中。它包含数据库密码,如果您正在与不同机器上的其他开发人员一起工作,那么试图跟踪哪个数据库在哪台机器上将是一件令人头疼的事情。这被认为是不好的做法,而不是您应该养成的习惯。
    2. 对于应检入源文件(Gemfile 和 Gemfile.lock)的文件,我将使用 Git 分支进行管理。我将有一个使用一个数据库的主分支。然后是另一个使用另一个的分支。如果您在 master 分支上工作并使用 MySQL 进行设置,那么每当您进行代码更改时,您都可以重新设置或合并到 SQlite 分支。只要您不编写大量特定于数据库的查询,就不会出现冲突问题。

    【讨论】:

    • 对不起,但(1)与我原来的问题没有任何关系。 (FWIW,我没有在我的配置文件中存储 PW——为了开发,你可以从环境变量中获取它们。)至于(2)变基和合并错过了我的帖子的重点:我确实有一堆 db - 特定的查询,我想要一种简单的方法来确保所有这些都有效,最好是“几乎同时”。
    【解决方案2】:

    好的,只需进行几次调整,就有一种简单的方法可以在多个数据库中的任何一个下运行您的应用和测试。我在以下内容中描述了该技术:

    RoR: how do I test my app against multiple databases?

    它对我很有效——其他人可能会觉得它有用。

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 2023-03-03
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多