具有多个数据库的 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 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 为什么 Rails 5 将“索引”更改为“外键”?

    如果你在 Rails 4 中有这个 t references event index true 现在你可以使用foreign key代替index在 Rails 5 中 我不太明白为什么他们决定这样做 因为功能保持不变 您添加的是索引 而不
  • Ruby on Rails content_for 会自动进行 HTML 转义吗?

    使用 Rails 3 0 6 我发现在视图中 如果我执行 content for food name Macaroni Cheese 然后当我使用它回来时content for food name 那么 将被制作成 amp 已经 如果我做一
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • 从其父应用程序运行 Rails 引擎的规范

    我有用于父应用程序的 rspec 套件 以及附加的一些引擎规范 我想要的是用一个命令来运行它们 有没有办法将我的 gems 路径包含到 rspec 加载路径中 或者我应该为此编写 rake 任务 我认为这是一个有趣的问题 但我的观点是 Ra
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • HABTM 关系和accepts_nested_attributes_for

    我有一个可以让我创建的表单新博客文章我希望能够创造新类别来自同一个表格 我在帖子和类别之间有一个习惯关系 这就是我遇到麻烦的原因 我有以下2个型号 class Post lt ActiveRecord Base has and belong
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 在 Rails 中禁用连接池以使用 PgBouncer

    我们有一个 Ruby on Rails 4 2 8 项目 可以访问大型 PostgreSQL 数据库 我们将使用 PgBouncer 添加一个新的连接池服务器 由于 PgBouncer 将处理数据库连接池 我们是否需要关闭 Rails 自动
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • 在 CircleCI 中设置 Elasticsearch 和 Ruby on Rails

    我正在尝试在 Rails 应用程序中使用 Elasticsearch 设置 CircleCI 我想已经配置了镜像 但是如何在 CI 中连接到它 到目前为止我已经尝试过 https github com elastic elasticsear
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • 如何在两个模型之间建立两个 has_many/belongs_to 关系?

    我有一个Project模型 以及一个Contact模型 项目模型有一个所有者和一个客户 两者都是Contacts 显然我遇到了一些不明确的事情 因为如果我有联系人并询问其项目 Rails 将不知道我询问的是它的项目是客户还是所有者 到目前为
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该

随机推荐

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

    前段时间看了小说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