RoR:使用 mysql 和 sqlite 高效测试项目

发布于 2024-10-20 13:19:06 字数 467 浏览 3 评论 0原文

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

  • 使用 mysql 和 sqlite 版本的应用程序进行同步自动测试/rspec 测试,这样我就可以立即知道我是否损坏了某些东西
  • 用于编写特定于数据库的代码的可靠构造,因为我需要偶尔闯入“ActiveRecord::Base.connection.select_all()”。

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

更简洁的方法是使用命令行切换到 Rails,以指定 Rails 启动时使用哪种配置。虽然这很好,但我不认为存在这样的命令行开关

其他人如何处理这个?

I'd like to continually test and benchmark my RoR app running over both mysql and sqlite, and I'm looking for techniques to simplify that. Ideally, I'd like a few things:

  • simultaneous autotest / rspec testing with mysql and sqlite versions of the app so I'll know right away if I've broken something
  • a dependable construct for writing db-specific code, since I need to break into `ActiveRecord::Base.connection.select_all()` once in a while.

The latter seems easy, the former seems difficult. I've considered having two separate source trees, each with its own db-specific config files (e.g. Gemfile, config/database.yml) and using filesystem links to share all common files, but that might frighten and confuse git.

A cleaner approach would be a command line switch to rails to say which configuration to use as rails starts up. Though it would be nice, I don't think such a command line switch exists

How do other people handle this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掐死时间 2024-10-27 13:19:06

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

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

If I were you, I would do two things:

  1. Don't check database.yml into your code repo. It contains database passwords, and if you're working with other developers on different machines, it will be a headache trying to keep track of which database is on which machine. It's considered bad practice and not a habit you should get into.
  2. For files that should be checked into source (Gemfile & Gemfile.lock), I would manage this using Git branches. I would have one master branch that uses one database. Then another branch that uses the other. If you are working off the master branch and have it setup with MySQL, you can just rebase or merge into the SQlite branch whenever you make code changes. As long as you're not writing a lot of database-specific queries, you shouldn't have conflict problems.
秋凉 2024-10-27 13:19:06

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

RoR:如何测试我的应用程序针对多个数据库?

它对我来说效果很好——其他人可能会发现它有用。

Okay, with just a couple of tweaks, there's a simple way to run your app and tests under any one of several databases. I describe the technique in:

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

It works well for me -- someone else might find it useful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文