首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在mongoid.yml中的同一Rails环境中设置多个数据库(不同)连接?

在mongoid.yml中的同一Rails环境中设置多个数据库连接,可以通过配置不同的数据库连接信息来实现。以下是一个示例的mongoid.yml配置文件:

代码语言:txt
复制
development:
  clients:
    default:
      uri: mongodb://localhost:27017/myapp_development
      options:
        server_selection_timeout: 5000
    secondary:
      uri: mongodb://localhost:27017/myapp_secondary
      options:
        server_selection_timeout: 5000

test:
  clients:
    default:
      uri: mongodb://localhost:27017/myapp_test
      options:
        server_selection_timeout: 5000
    secondary:
      uri: mongodb://localhost:27017/myapp_test_secondary
      options:
        server_selection_timeout: 5000

production:
  clients:
    default:
      uri: <%= ENV['MONGODB_URI'] %>
      options:
        server_selection_timeout: 5000
    secondary:
      uri: <%= ENV['MONGODB_SECONDARY_URI'] %>
      options:
        server_selection_timeout: 5000

上述配置文件中,我们定义了三个环境:development、test和production。每个环境下都可以配置多个数据库连接。

在每个环境下的clients部分,我们可以定义多个连接,例如defaultsecondary。每个连接都需要指定一个唯一的名称,并提供连接的URI和选项。

在Rails应用程序中,可以通过Mongoid.clients方法来获取所有已配置的连接。例如,要获取default连接,可以使用Mongoid.clients[:default]

在使用不同数据库连接的模型中,可以通过在模型类中使用using_connection方法来指定要使用的连接。例如:

代码语言:txt
复制
class User
  include Mongoid::Document
  using_connection(:secondary)

  # 模型定义...
end

上述示例中,User模型将使用名为secondary的连接。

这样,我们就可以在mongoid.yml中的同一Rails环境中设置多个数据库连接了。根据实际需求,可以配置不同的连接来满足应用程序的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序

如果您应用程序需要客户端/服务器SQL数据库PostgreSQL或MySQL)可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外步骤才能启动并运行它。...本教程将向您展示如何在Ubuntu 14.04服务器上设置开发Ruby on Rails环境,以允许您应用程序使用MySQL数据库。首先,我们将介绍如何安装MySQL和MySQL适配器gem。...安装完成后,我们需要运行一些额外命令来安全地设置MySQL环境。首先,我们需要告诉MySQL创建其数据库目录结构,它将存储其信息。...配置数据库连接 如果您按照本教程MySQL安装说明操作,则为MySQLroot用户设置密码。MySQL根登录将用于创建应用程序测试和开发数据库。...IP地址在Web浏览器访问您Rails应用程序: http://server_public_IP:3000 如果您看到“欢迎登陆”Ruby on Rails页面,您应用程序已正确配置,并连接到MySQL

4.8K00

如何使用本地 Docker 更好地开发?我们总结了这八条经验

我们团队构建和维护着大量应用程序,运行着不同软件栈和版本,并且能够将开发环境打包,这让不同项目的切换和开发人员快速上手新项目变得非常容易。...这并不是说在本地使用 Docker 开发就没有缺点,但它带来便利远远超过了缺点。 随着时间推移,我们总结出了自己一套最佳实践,可以有效设置 Docker 开发环境。...); 数据库(通常是 PostgreSQL); 其他必要基础设施( Redis、ElasticSearch、Mailhog); 有些应用程序实例偶尔也会做一些其他事情,而不只是运行开发服务器(比如后台任务...3 只在 docker-compose.yml 引用一次 Dockerfile 如果你将同一个镜像用于多个服务(你应该这么做),只需要在一个服务定义中提供构建说明,给它起一个名字,然后在其他服务引用这个名字...前者将启动一个新容器来运行命令,而后者将连接到一个已经在运行容器。

2K40

何在CentOS 6.5上使用 Nginx+Passenger 部署Railes应用程序

介绍 对于某个计算机编程领域新手来说,挑战永远不会结束。本文主题是Rails,以及如何在线获取基于Ruby On Rail Web应用程序 - 这是最简单,最快捷方式。...准备Deployment Server 更新和准备操作系统 设置Ruby环境Rails 下载并安装服务器应用程序 3....请记住: “处理”连接在技术上意味着不要丢弃它们并能够用某些东西为它们提供服务。您仍然需要您应用程序和数据库正常运行才能让Nginx为客户端提供非错误消息响应。...要安装curl-devel和nano,请运行以下命令: yum install -y curl-devel nano sqlite-devel libyaml-devel 设置Ruby环境Rails...你也可以选择腾讯云数据库 ,它能够让您在云端轻松设置、操作和扩展目前功能最强大开源数据库 PostgreSQL。

4.9K20

好雨云帮一周问答集锦(2.6-2.12)

需要注意是版本需求,目前云帮支持centeros 7.2,ubantu 14.04。 云帮对于依赖操作系统支持是不断更新,最新文档请参考云帮安装手册 Q:如何在云帮上为我团队增加成员?...举例—— 云市安装MySQL服务: 默认是开启对内服务,它别名是 MYSQL 这样其他应用如果想使用这个MySQL服务,关联后就可以直接使用 MySQL_HOST 和 MYSQL_PORT 两个变量来连接这个数据库服务了...用户自己写API服务:如果用户自己开发了一个REST Full应用,只是内部调用使用,这时就可以开启对内服务,并设置好别名,这样团队账号其他应用就可以通过应用别名访问到这个REST Full应用了...比如把这个应用别名设置为 USER_API 这样其他应用可以关联到这个应用,并使用 USER_API_HOST 和 USER_API_PORT 来访问到这个API应用了。...Q:开发环境是Macbook pro,Rails5,如何部署到公有云上面? 对于Rails5.x支持将在近期上线,敬请期待!

1.4K60

何在Ubuntu 14.04上使用PostgreSQL和Ruby on Rails应用程序

如果您应用程序需要客户端/服务器SQL数据库PostgreSQL或MySQL)提供可伸缩性,集中化和控制(或任何其他功能),则需要执行一些其他步骤才能启动并运行它。...本教程将向您展示如何设置开发Ruby on Rails环境,该环境允许您应用程序在Ubuntu 14.04服务器上使用PostgreSQL数据库。首先,我们将介绍如何安装和配置PostgreSQL。...然后我们将向您展示如何创建使用PostgreSQL作为其数据库服务器rails应用程序。 准备 本教程要求具有可用Ruby on Rails开发环境。...配置数据库连接 您创建PostgreSQL用户将用于创建应用程序测试和开发数据库。我们需要为您应用程序配置正确数据库设置。 在您喜欢文本编辑器打开应用程序数据库配置文件。...如果你在这一点上得到一个错误,重温以前第(配置数据库连接),以确保在database.ymlhost,username和password是正确

3.4K00

GitHub 关系型数据库垂直分库实践

Query Linter Query Linter 用于检查只有属于同一个模式领域表才能被针对同一数据库查询引用。如果它检测到查询包含来自不同领域表,就会抛出异常。...Transaction Linter 除了查询语句之外,事务也是我们一个关注点。现有的应用程序代码都是基于一定数据库模式。MySQL 事务可以保证同一数据库不同表之间一致性。...与 Query Linter 类似,它可以确保一个事务所涉及表都属于同一个模式领域。 这个 Linter 运行在生产环境,进行大量采样,并将对性能影响降到最低。...这样可以确保它们位于同一数据库集群,继续享有事务一致性保证。...这种情况多发生在“多态性”表上,这些表数据来自不同模式领域(例如,reactions 表保存了来自多个不同功能数据, Issues、拉取请求、讨论等)。

1.5K11

TW洞见〡Ruby Web服务器:这十五年

因此CGI原生是单一进程/请求,特别是每次请求时产生进程创建/销毁操作消耗了大量系统资源,根本无法满足较高负载HTTP请求。此外,CGI进程模型还限制了数据库连接池、内存缓存等资源复用。...Webrick曾被用于Rails核心团队开发和测试。...但是,Webrick内置HTTP Parser非常古老,文档缺失,性能低下且不易维护,功能单一且默认只支持单进程模式(但支持多线程,不过在Rails默认关闭了对Webrick多线程支持),根本无法满足产品环境并发和日常维护需求...为了尽量减少资源浪费,若干请求可以复用同一个与Web服务器之间连接,且支持扩展至多个FastCGI服务器进程。...由于mod_ruby在多个Apache进程只能共享同一个Ruby解释器,意味着当同时运行多个Web应用(Rails)时会发生冲突,存在安全隐患。

1.9K100

何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序

Puma是一个应用服务器,Passenger或Unicorn,它使您Rails应用程序能够同时处理请求。...使用以下命令退出PostgreSQL控制台: \q 现在,我们已准备好使用正确数据库连接信息配置您应用程序。 配置数据库连接 确保您位于应用程序根目录(cd ~/appname)。...将生产密码和机密保存在应用程序代码库之外被认为是最佳实践,因为如果您使用是分布式版本控制系统(Git),它们很容易暴露出来。接下来我们将讨论如何使用环境变量设置数据库身份验证。 保存并退出。...安装rbenv-vars插件 在部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。...设置环境变量 现在已经安装了rbenv-vars插件,让我们设置所需环境变量。

5.4K10

为什么要使用Node.js?

这是最简单例子了,如果你想让它更加健壮,你可以使用Redis这样高速缓存,或者更高级一点,用消息队列处理客户端消息分发,并且建立更强大连接机制,用来减少建立临时连接损失,还可以为已经注册用户保存离线消息...上文提到,Node.js可以轻松地处理高并发连接,但是数据库访问却是阻塞操作,在这种情况下,我们就有麻烦了。解决方案就是,我们先接受客户端请求,并返回结果,然后才真正写到数据库。...代理 Node.js和容易搭建一个服务端代理,它可以以非阻塞方式处理大量并发连接。尤其是用在为不同响应时间服务做代理,或者从多个源点收集数据。...在生产环境下你可以使用专用代理服务,:nginx、HAProxy等。 中间层 让我们回到应用水平。...Node.js关系数据库工具发展仍在早期阶段;它们工作相当不成熟也不友好。另一方面,Rails自动提供数据访问设置权开箱与DB模式迁移支持工具和其他Gems。

3.2K21

使用SSH隧道保护三层Rails应用程序通信

在Ruby on Rails应用程序,它可以轻易地映射到表示层Web服务器,应用程序层Rails服务器和数据层数据库。...使用Puma部署Rails应用程序。请注意,在安装rbenv-vars插件部分,必须设置数据库用户和密码以反映在 数据库服务器 上安装PostgreSQL时使用值。...该 应用程序服务器 必须能够连接数据库服务器 才能访问所需Rails应用程序数据,和 web服务器 必须能够连接到 应用服务器 ,以便它有东西呈现给用户。...退出SSH连接数据库服务器 ,然后退出 tunnel 用户: app-server$ exit ​ app-server$ exit 您在步骤设置SSH连接构成了SSH隧道基础,这将实现三个服务器层之间安全通信....rbenv-vars文件并编辑环境变量: sammy@app-server$ nano /home/sammy/appname/.rbenv-vars 如果在 数据库服务器 上为PostgreSQL角色设置不同名称和密码

5.6K30

何在Ubuntu 14.04上使用Unicorn和Nginx部署Rails应用程序

本教程将帮助您部署Ruby 在 Rails应用程序生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Unicorn和Nginx。...此外,本教程未介绍如何设置开发或测试环境。如果您需要帮助,请参考腾讯云+社区中有关PostgreSQL with Rails教程示例进行操作。...使用以下命令退出PostgreSQL控制台: \q 现在,我们已准备好使用正确数据库连接信息配置您应用程序。 配置数据库连接 确保您位于应用程序根目录(cd ~/appname)。...将生产密码和机密保存在应用程序代码库之外被认为是最佳实践,因为如果您使用是分布式版本控制系统(Git)时,它们会很容易被暴露出来。接下来我们将讨论如何使用环境变量设置数据库身份验证。...安装rbenv-vars插件 在部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。

4.2K00

GitLab安装与基础使用

Guest Reporter Developer Master Owner (4).不同git库里面的关联同一个成员可以设置不同权限 (5).不同git库里面的关联同一个组无法设置不同权限 (6).一个...(保证数据库没有新连接不会有写数据情况) gitlab-ctl stop unicorn gitlab-ctl stop sidekiq #指定恢复文件会自动去备份目录找格式:1587001493_...,先从大版本低版升级,再到最后版本升级,以此类推; 因为我中间尝试过直接跨太多个版本升级,出现过异常,其实主要是数据库数据导入备份问题,如果新版本跟旧版相关太大的话就会报错了。...解决思路: 方法一、重新配置一个Ldap服务把之前数据库导进来,迁移到新机器上然后修改Gitlab认证服务地址。 方法二、直接修改Gitlab数据库,对帐号认证方式修改。....修改配置文件添加最后两行egrep -v "^#|^ 连接上后找到对应identities表修改对应字段,其实就是把字段user_id修改掉,我这里做法就是把用户user_id改成了负数,这样在

8.4K20

云原生概念

通常会有一个生产环境,一个或多个预发布环境。此外,每个开发人员都会在自己本地环境运行一个应用实例,这些都相当于一份部署。 所有部署基准代码相同,但每份部署可以使用其不同版本。...上述 2 个例子,仅需修改配置资源地址。 每个不同后端服务是一份 资源 。例如,一个 MySQL 数据库是一个资源,两个 MySQL 数据库(用来数据分区)就被当作是 2 个不同资源。...构建阶段是可以相对复杂一些,因为错误信息能够立刻展示在开发人员面前,从而得到妥善处理。 VI. 进程 以一个或多个无状态进程运行应用 运行环境,应用程序通常是以一个和多个 进程 运行。...一些互联网系统依赖于 “粘性 session”, 这是指将用户 session 数据缓存至某进程内存,并将同一用户后续请求路由到同一个进程。...与此不同,开发人员经常希望执行一些管理或维护应用一次性任务,例如: 运行数据移植(Django manage.py migrate, Rails rake db:migrate)。

4.2K51

云原生应用12要素

通常会有一个生产环境,一个或多个预发布环境。此外,每个开发人员都会在自己本地环境运行一个应用实例,这些都相当于一份部署。 所有部署基准代码相同,但每份部署可以使用其不同版本。...上述 2 个例子,仅需修改配置资源地址。 每个不同后端服务是一份 资源 。例如,一个 MySQL 数据库是一个资源,两个 MySQL 数据库(用来数据分区)就被当作是 2 个不同资源。...构建阶段是可以相对复杂一些,因为错误信息能够立刻展示在开发人员面前,从而得到妥善处理。 VI. 进程 以一个或多个无状态进程运行应用 运行环境,应用程序通常是以一个和多个 进程 运行。...一些互联网系统依赖于 “粘性 session”, 这是指将用户 session 数据缓存至某进程内存,并将同一用户后续请求路由到同一个进程。...与此不同,开发人员经常希望执行一些管理或维护应用一次性任务,例如: 运行数据移植(Django manage.py migrate, Rails rake db:migrate)。

4.2K110

企业自建GitLab代码仓库安装与基础配置使用

(2).建git库时候可以关联一个组或者一个成员 (3).添加到组里面的人员可以设定Guest Reporter Developer Master Owner (4).不同git库里面的关联同一个成员可以设置不同权限...(5).不同git库里面的关联同一个组无法设置不同权限 (6).一个git库只能关联一个组成员 (7).一个组成员可以被多个git库关联,且权限一样 (8).一个成员可以被多个git库或组成员关联,且权限可以不一样...(这里是我建议,一般差不多最后几版就可以了),接下来就是跨大版本升级,先从大版本低版升级,再到最后版本升级,以此类推; 因为我中间尝试过直接跨太多个版本升级,出现过异常,其实主要是数据库数据导入备份问题...(4) gitlab-rails database初始化失败 环境说明 Centos7: 3.10.0-327.el7.x86_64 gitlab版本:原来是8.8.5版本现升级到较新版本; 问题:在同一台...,下边初始数据库gitlabhq_production和用户名都是默认,密码为空 连接上后找到对应identities表修改对应字段,其实就是把字段user_id修改掉,我这里做法就是把用户

9K55

不是 Ruby,而是你数据库

为了说明相对性能差异,我们进行了一项实验,比较了在不同源上写入和读取一百万条记录时表现:内存、内存 SQLite 数据库和 Postgresql 数据库。...我曾在一个拥有百万级用户应用程序,导致数据库服务器集群崩溃:原因在于一个无关控制器简单更改,使 Rails 切换到一个外部连接,该连接具有巨大物化视图,本不应以这种方式连接(用于报告)。...未优化连接。添加简单 has_many 太容易了,这使得开发人员可以在数据库启动过于繁重查询。一旦通过应用程序引入和传播,这几乎不可能解决。...[3] 一个快速 grep:超过 9000 个类,超过 33000 个方法;不包括所有神奇动态方法,比如围绕数据库模型方法。这还不包括 rails 本身附带 70 多个依赖项。...[5] 具有讽刺意味是,在这种非 http、非 rails 环境,性能问题变得不那么明确了,然而在这些情况下,人们通常会因为 ruby 性能问题而将其作为选项。

11730

何在Ubuntu上使用Passenger安装Rails和nginx

这是一个很棒程序,可以让你在一个系统上使用多个版本Ruby。但是,我们将使用它来安装最新版本Ruby。...完成后,您将全部使用Ruby on Rails设置,现在可以将它连接到nginx。 第五步,安装Passenger Passenger是在nginx或apache上部署Rails有效而简单方法。...完成后,它将告诉您有关对nginx配置文件所做更改以及如何在虚拟服务器上部署Ruby on Rails应用程序。 最后一步是启动nginx,因为它不会自动执行。...第八步,将Nginx连接到您Rails项目 安装rails后,打开nginx配置文件 sudo nano /opt/nginx/conf/nginx.conf 将root设置为新rails项目的公共目录...$ rails new my_awesome_rails_app 如果您使用是CentOS系统,可以参考腾讯云开发者实验室在 Linux 上部署 Ruby On Rails 环境,腾讯云社区也提供Ruby

3.5K40

如何部署Mina:入门教程

术语表 1.了解Mina&Rake Mina Deployer和自动化工具 RAKE - Ruby Make 2.获得Mina 准备系统 设置Ruby环境Rails 安装Mina 3.使用Mina 启动...Mina将这些基于RAKE编程文件转换为Bash脚本,连接到已定义远程服务器并执行它们。 它实际上运行非常快,并且可能和它类型工具一样快,因为它只是连接到服务器并运行Bash程序。...生活在没有Rails世界:Mina可以做到以上所有,甚至更多,并且对Rails没有任何严重依赖。使用Mina,您几乎可以部署所有内容。...获取Mina 使用Mina时,您需要确保拥有一个稳定Ruby环境,并且安装了必要依赖项并且运行正常 - 例如gem。 在本节,我们将首先在CentOS 6系统上创建Ruby环境。...应用程序 关于Rails应用程序部署示例,请参考:“如何在CentOS 6.5上使用Unicorn和Nginx部署Rails应用程序”。

4.5K40

你了解Node.js原理和应用场景吗?

代理 把 Node.js 用作服务器端代理是很容易,它能够以非阻塞方式处理大量并发连接。这对于为代理不同响应时间多个服务,或从多个源收集数据场景特别有用。...以下是一些需要考虑问题: 优点: 如果你程序没有任何 CPU 密集型计算,可以用 Javascript 和对象存储数据库MongoDB)构建它,甚至可以在数据库级别进行构建。...如果你要对关系型数据库进行操作,请并选择 Rails、Django 或 ASP.Net MVC 等其他环境。...与其竞争对手相比,Node.js 关系型数据库工具仍然相当原始。另一方面,Rails 提供了开箱即用数据访问设置以及数据库架构迁移支持工具,另外还有其他 Gems。...如果仅仅是把 Node.js 用作面向公众界面,同时用 Rails 后端访问关系数据库,这是可以,而且这种方式并不罕见。

4.5K40
领券