具有多个数据库的 Rails RSpec

2024-01-04

我运行一个 Rails 应用程序,我们正在将注册流程拆分为一个单独的应用程序。注册应用程序有自己独立的数据库(用于 CMS 和收集潜在客户),但它还需要访问主数据库。使用这个效果非常好ActiveRecord::Base.establish_connection.

但是,我希望能够编写一些规范。问题是,如何在每次测试运行时都不清除开发数据库的情况下编写规范/测试?如果我在测试模式下进入控制台,很明显测试模式已从我的主应用程序连接到开发数据库中。

我的 database.yml 文件如下所示:

development: 
  database: signup_dev

test:
  database: signup_test

main_app_dev: 
  database: main_app_dev

main_app_test: 
  database: main_app_test

根据这个文件,我想establish_connection连接到数据库my_app_dev在开发模式下,以及my_app_test在测试模式下。有任何想法吗?


我们有一个 gem,它基本上是连接到我们的遗留系统的 ActiveRecord 模型的集合。在我们的例子中,我们将所有这些模型包含在一个模块中,与旧数据库相关的所有模型都从该模块连接。

module Legacy
  class Base < ActiveRecord::Base
    establish_connection :legacy
  end

  class User < Base
  end
end

通过此设置,可以非常轻松地切换数据库连接。如果您真的想要自动检测,您可以将逻辑放入基类中来确定要使用哪个数据库:

module Legacy
  class Base < ActiveRecord::Base
    if Rails.env == 'test'
      establish_connection :legacy_test
    else
      establish_connection :legacy
   end
end

或者简单地告诉您的模块在规范助手中使用哪个连接:

# spec/spec_helper.rb    
Legacy::Base.establish_connection(ActiveRecord::Base.configurations['legacy_test'])

我个人会推荐第二种选择。当然,这两种解决方案都依赖于命名空间模型。

Peer

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个数据库的 Rails RSpec 的相关文章

  • 通俗地说,Ruby on Rails ORM 是什么?请解释

    我无法理解 Ruby on Rails 中的 ORM 据我了解 表 列和对象 属性之间存在 1 1 的关系 所以每条记录都是一个对象 另外 模型到底是什么 我知道它映射到一张桌子 我真正追求的是对上述内容有更深入的理解 预先感谢您的帮助 我
  • Rails 中是否可以跨多个数据库进行内部联接?

    我很难使用has many through关联 其中一些表位于单独的数据库中 database one class Input lt ApplicationRecord belongs to user Works great end dat
  • Rails 命令有什么区别:--no-test-framework、--skip-test-unit 和 -T?

    原本我以为这三者都是一样的 但现在仔细一看 却发现它们各有不同 我通过搜索找不到任何关于此的好的文档 根据导轨API http api rubyonrails org classes Rails Generators Base html a
  • c3p0 Java 数据库池、故障转移配置

    当数据库关闭时 IP 和端口会自动切换到另一个数据库服务器 我应该如何配置 Web 应用程序的 c3p0 连接池以遵循此数据库故障转移机制 目前 我使用的是 c3p0 但是在上次数据库故障转移中 池连接无法重新建立 请求失败后重新建立 有助
  • Rails:使最终用户可以编辑视图?

    无论如何 我可以使最终用户可以编辑 Rails 视图中的内容吗 这样他们就可以在我允许的页面上进行简单的文本更改 而无需我自己编辑 HAML 文件 想法 澄清 我了解 CMS 系统 但我认为这并不完全是我想要的 我想保持对视图的编程控制 但
  • 连接到 mysql 服务器(localhost)非常慢

    实际上有点复杂 摘要 与数据库的连接非常慢 页面渲染大约需要 10 秒 但页面上的最后一条语句是一个回显 当页面在 Firefox 中加载时我可以看到它的输出 IE 是相同的 在谷歌浏览器中 只有在加载完成后输出才可见 不同浏览器的加载时间
  • 在自定义条件下清理 SQL

    我需要创建一个简单的搜索 但我无法使用 Sphinx 这是我写的 keywords input split s queries keywords each do keyword queries lt lt sanitize sql for
  • Rails 3 应用程序的 MySQL Cluster (NDB) 与 MySQL Replication (InnoDB):优点/缺点?

    我们正在对当前系统进行概述 试图找出是否可以提高性能和可靠性 目前 我们运行着一堆内部 Rails 应用程序和基于 Rails 的网站 有些已经是 Rails 3 有些正在转换为 Rails 3 它们都连接到以下 MySQL 设置 mysq
  • Rails 5.2 Active Storage 添加自定义属性

    我有一个带有附件的模型 class Project lt ApplicationRecord has many attached images end 当我附加并保存图像时 我还想保存一个附加的自定义属性 display order 整数
  • 无法安装 RMagick 0.0.0。找不到 Magick 配置

    我正在运行 debian 服务器并在一段时间后升级了所有软件包 apt get update apt get upgrade apt get distro upgrade 然后 rmagick 不再工作了 因为 imagemagick 被更
  • Capistrano 无法定位应用程序部署中的 Gemfile 错误

    我正在尝试将 Rails 应用程序部署到生产服务器 并决定使用以下命令将其部署到 DigitalOcean本指南 https gorails com deploy ubuntu 14 04 overview RVM 要部署 我使用以下命令
  • Rails 上的 SASS 无效 CSS 错误

    我正在尝试使用http startbootstrap com stylish portfolio http startbootstrap com stylish portfolio但是 在我的 Rails 应用程序中 我在 vintage
  • 初始化会破坏rails中的布局设置吗?

    在其中一个控制器中 我需要特定的布局 我添加了layout一开始 效果很好 但如果我添加一个initialize某些基于控制器的变量的函数 Rails 似乎只是忽略了layout命令 有人有同样的问题吗 我该如何修复它 class Admi
  • Rails 6 - 操作文本和 API

    我正在创建一个 Rails 6 0 0 应用程序 它具有以下模块 网络 表格 Cruds Api 我使用的地方有一个 CRUD动作文本 https edgeguides rubyonrails org action text overvie
  • 使用 PostgreSQL 的模式和 Rails 创建多租户应用程序

    我已经想通的事情 我正在学习如何在 Rails 中创建多租户应用程序 该应用程序根据用于查看应用程序的域或子域来提供来自不同模式的数据 我已经回答了一些问题 如何让 subdomain fu 也能与域一起使用 这是有人问了同样的问题 htt
  • 带分页的 Rails 随机活动记录

    我需要查找特定资源的所有记录并以随机顺序显示它们 但具有一致的分页 如果开始分页 您将不会看到相同的记录两次 每次用户访问页面时 显示顺序都应该是随机的 我在用将分页 http wiki github com mislav will pag
  • Rails 中的 ActionController::RoutingError (没有路由匹配 [GET] "/favicon.ico")

    我尝试过使用 还有这个 但我仍然在日志文件中看到此错误 ActionController RoutingError No route matches GET favicon ico favicon ico 位于 public 文件夹中 我也
  • Rails:验证字符串的最小和最大长度,但允许其为空白

    我有一个想要验证的字段 我希望该字段能够留空 但如果用户输入数据 我希望它采用某种格式 目前我在模型中使用以下验证 但这不允许用户将其留空 validates length of foo maximum gt 5 validates len
  • Rails & Devise:如何在没有布局的情况下呈现登录页面?

    我知道这可能是一个简单的问题 但我仍在试图弄清楚Devise https github com plataformatec devise out 我想要render layout gt false在我的登录页面上 我怎样才能做到这一点Dev
  • 如何在控制器中获取f.submit的名称参数?

    我创建了 form html erb 其中的编码如下 是的 我确实有两个相同表单的提交 并且它们都有 更新 和 销毁 等名称 当用户按下销毁按钮时 books controller 中的更新操作将被调用 并判断是 更新 还是 销

随机推荐

  • 关于集群和群体算法有哪些好的资源?

    前段时间看了小说Prey https rads stackoverflow com amzn click com 0066214122 尽管这绝对是有趣的科幻小说领域 但它激起了我对群体人工智能的兴趣 我最近在 Reddit 上看到了这些演
  • 当每 4 分钟发送一次保持活动请求时,Azure Functions 在消耗计划中仍处于“冷启动”状态

    我已经读过了解无服务器冷启动 Azure 应用服务团队博客 https blogs msdn microsoft com appserviceteam 2018 02 07 understanding serverless cold sta
  • 将列添加到动物园对象

    我有一个动物园对象z10行2列如下 Date Return 1986 01 0 00308215260513781 1986 02 0 00305355599484584 1986 10 0 00349830477430457 我需要一个n
  • 在 Unity 中重复音频剪辑,间隔越来越小

    我希望倒计时器在倒计时时滴答得更快 滴答声 是一个非常短的音频片段 我已经让计时器工作了 它每帧都会调用 playTickManager 然而 通过此实现 在取消 重新调用的某些转换中 滴答声之间的间隙不一致或重叠 导致滴答声听起来不自然
  • 如何测试 Intuit 重新连接 api?

    我正在构建一个页面 该页面将向 Intuit Reconnect API 发送请求以更新 Oauth 令牌和令牌秘密值 这是工作 但我的测试 Oauth 值不在过期 30 天内 因此 响应始终是 令牌刷新窗口超出范围 有没有办法解决这个问题
  • 在 Django 中,如何调用“用户组”作为模型类中的外键?

    我创建了一个名为 Question 的模型类 我希望只有特定的用户组才能回答问题 现在 我如何从用户组中引入外键 在我的数据库中有一个问题表 会有很多问题 但并非所有用户都可以查看或回答问题 这将取决于用户属于哪个用户组 所以我必须指定允许
  • 如何挂载 kubernetes.io/dockerconfigjson

    我有一个类型的秘密kubernetes io dockerconfigjson kubectl describe secrets dockerjson Name dockerjson Namespace my prd Labels
  • div 中的图像水平居中[重复]

    这个问题在这里已经有答案了 我有一个img在 div class top image 并且我希望这个图像正好位于 div 的中间 但我尝试的任何方法都不起作用 谢谢你的帮助 此处发布的每个解决方案都假设您知道您的尺寸img 这不是常见的情况
  • 将 Webhook 用于 Microsoft Graph API 的问题

    我使用 Graph API 为群组对话添加网络挂钩 因为我需要监视所有组的对话 所以我读取了组列表并为每个组添加了网络挂钩 20 30组后 不同账户的数量会有所不同 Graph API开始返回错误 error code message Se
  • SurfaceTexture.getTransformMatrix的返回值是什么意思,谁能解释一下?

    每个人 我正在Android中使用SurfaceTexture 但我无法理解它的API getTransformMatrix float mtx API文档如下 Retrieve the 4x4 texture coordinate tra
  • 目标构建失败后 CMake 运行自定义命令

    我知道如何在使用 add custom command 构建目标之后 或之前 运行命令 add custom command TARGET my target POST BUILD COMMAND echo custom command 但
  • Apache RewriteRule 到子目录

    我需要将 myhomepage com 重定向到 myhomepage com sub 当我阅读 apache org docs 1 3 misc rewriteguide html 上的指南时 我不知道他们在说什么 因此我决定友好地询问这
  • 在 WPF WebBrowser 控件中显示字符串中的 html

    我的数据上下文对象包含一个字符串属性 该属性返回我需要在 WebBrowser 控件中显示的 html 我找不到可将其绑定到的 WebBrowser 的任何属性 有任何想法吗 Thanks The WebBrowser has a 导航至字
  • 有效的 XPath 表达式

    只是两个问题 如何检查分配给变量的字符串是否对应于有效的 XPath 表达式 如果请求的资源不存在 如何返回自定义的错误消息 如果 XPath 无效 您将收到异常 如果请求的节点不存在 您将得到空结果 放 例如 from lxml impo
  • 如何设置 MPNowPlayingInfoCenter 的图稿图像

    我一直在尝试更新以下项目中显示的艺术品MPNowPlayingInfoCenter using MPMediaItemPropertyArtwork如以下代码所示 取自苹果的文档 https developer apple com docu
  • MySQL week() 函数以星期六开始

    在 MySQL 中 是否有可能或者如何修改 week 以便一周从星期六开始 我在用WEEK CURDATE 0 获取开始日期为星期日的周数 但是 我想获取起始日为星期六的周数 我想我找到了一种方法 只需将日期移 1 天即可 WEEK CUR
  • jQuery-mobile 1.3 面板始终可见

    在新的 jQuery mobile 1 3 版本中 如何添加一个从一开始就始终可见的左侧面板 该面板将充当导航菜单 Thanks 您可以像这样以编程方式打开它 document on pagebeforeshow index functio
  • 无法更改 Unity 中 Inspector 变量中的数组大小?

    根据我读到的内容 这就是矢量 大小 的设置方式 public Color teamAColors new Color 4 But when the code is run it looks like this 我为 4 设置的数字似乎并不重
  • 为什么 Rails 命令强制显示“new”命令的帮助消息?

    奇怪的是 在某些情况下我无法执行典型的 Rails 命令 例如rails s and rails c 我发现这种情况发生在某个功能分支上 过去也偶尔发生过 但目前适用于我的develop branch 我逆转了任何 rb可以加载并产生任何效
  • 具有多个数据库的 Rails RSpec

    我运行一个 Rails 应用程序 我们正在将注册流程拆分为一个单独的应用程序 注册应用程序有自己独立的数据库 用于 CMS 和收集潜在客户 但它还需要访问主数据库 使用这个效果非常好ActiveRecord Base establish c