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

如何在Heroku中为一个rails 3.1 app使用多个数据库?

在Heroku中为一个Rails 3.1 app使用多个数据库,您需要遵循以下步骤:

  1. 配置Gemfile:

在您的Gemfile中添加所需的数据库适配器。例如,如果您想使用PostgreSQL和MySQL,请添加以下行:

代码语言:txt
复制

gem 'pg'

gem 'mysql2'

代码语言:txt
复制

然后运行bundle install以安装这些gem。

  1. 创建数据库:

在Heroku中创建两个数据库:

代码语言:txt
复制

heroku addons:create heroku-postgresql:hobby-dev

heroku addons:create jawsdb-maria:kitefin

代码语言:txt
复制

这将创建一个PostgreSQL数据库和一个MySQL数据库。

  1. 配置数据库连接:

在您的Rails应用程序中,创建一个名为config/database.yml的文件,其中包含以下内容:

代码语言:txt
复制

development:

代码语言:txt
复制
 adapter: postgresql
代码语言:txt
复制
 encoding: unicode
代码语言:txt
复制
 database: your_postgres_database_name
代码语言:txt
复制
 pool: 5
代码语言:txt
复制
 username: your_postgres_username
代码语言:txt
复制
 password: your_postgres_password
代码语言:txt
复制
 host: your_postgres_host
代码语言:txt
复制
 port: your_postgres_port

mysql:

代码语言:txt
复制
 adapter: mysql2
代码语言:txt
复制
 encoding: unicode
代码语言:txt
复制
 database: your_mysql_database_name
代码语言:txt
复制
 pool: 5
代码语言:txt
复制
 username: your_mysql_username
代码语言:txt
复制
 password: your_mysql_password
代码语言:txt
复制
 host: your_mysql_host
代码语言:txt
复制
 port: your_mysql_port
代码语言:txt
复制

请确保使用您在上一步中创建的数据库的正确凭据填充这些值。

  1. 配置模型:

在您的Rails应用程序中,为每个数据库创建一个单独的模型。例如,如果您有一个名为User的模型,您可以创建一个名为UserPostgre的模型,该模型将使用PostgreSQL数据库,并创建一个名为UserMySQL的模型,该模型将使用MySQL数据库。

在这些模型中,指定要使用的数据库连接:

代码语言:txt
复制

class UserPostgre< ActiveRecord::Base

代码语言:txt
复制
 establish_connection :development

end

class UserMySQL< ActiveRecord::Base

代码语言:txt
复制
 establish_connection :mysql

end

代码语言:txt
复制
  1. 使用多个数据库:

现在,您可以在应用程序中使用这两个数据库。例如,您可以在控制器中使用UserPostgreUserMySQL模型,如下所示:

代码语言:txt
复制

def index

代码语言:txt
复制
 @users_postgresql = UserPostgre.all
代码语言:txt
复制
 @users_mysql = UserMySQL.all

end

代码语言:txt
复制

这将从两个不同的数据库中检索用户数据,并将它们传递给视图进行显示。

总结:

通过遵循这些步骤,您可以在Heroku中为Rails 3.1应用程序设置和使用多个数据库。这种方法可以让您根据需要将数据存储在不同类型的数据库中,以满足您的应用程序需求。

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

相关·内容

Salesforce的PaaS平台Heroku简介

2011/11/23:Heroku推出DBaaS数据库即服务 Heroku Postgres供使用 SQL 数据库的开发人员使用....此前 Heroku 已经把 PostgreSQL 作为一种服务工具提供给开发人员,且已有几年的历史,不过现在开发团队的希望是,无论自己的应用在哪里托管都能使用Heroku数据库服务。...如果 HerokuRails 在企业的境遇心有不甘的话,携手 Salesforce 再合适不过了。 1 Salesforce 拥有大量已经接受云应用的中小企业客户。...附2 Heroku架构简介 Heroku是一种提供Ruby语言服务的云计算应用平台,客户进行网络编程提供全新体验。 Heroku构建在Amazion AWS之上的云计算应用平台。...客户可以直接从浏览器访问和编辑自己的代码,也可以添加相关语言的插件。Heroku平台在程序开发上可让你得到与本地计算机相同,甚至更好的体验。 HerokuRails应用最简单的部署平台。

7.2K20

容器是未来吗?

我正在使用Rails建立一个简单的CRUD应用,我准备部署到Heroku. 这种方式怎么样? -噢不....你有一个应用app,这样你至少有8-12个服务? 什么? 不,只是一个应用app. 服务什么的是它们中一个 -不,看看微服务microservices. 它是未来....-No, 他发表了有关每个数据库如何不能完成CAP系列博文。 什么是CAP? -就是CAP理论 它说你在一致性 可用性和分区容错性三者只能取两个。 OK, 所有数据库都在CAP面前失败了?...-意思是这些数据库都是狗屎,Mongo. 我认为Mongo可以实现Web规模扩展? -没有其他人做到过. OK, 那么etcd? -Yeah, etcd 是分布式key-value存储....上,使用小型Kubernetes集群通过etcd管理编排它们, 识别出网络和存储这些开放未解决的问题,那么我就能持续递交多个微服务的复制冗余到这些机器上。

2.7K40
  • 主流 PaaS 平台架构:谷歌GAE、AEB、Cloud Foundry、Heroku

    在这个架构下应用流量可被路由到多个版本以支持 A/B 测试。App Engine 相当于计算资源,它分为 service(面向用户)和 batch(后台任务)两类。...AppEngine Memcache 在架构一个内存共享实例,充当缓存使用,我们可以将身份验证、会话信息等存放在这里来提升 Web 服务器性能。...Cloud Foundry Cloud Foundry 是由 VMware 贡献的一个开源 PaaS 项目,它是一个基于Ruby on Rails 的由多个相对独立的子系统通过消息机制组成的分布式系统...而 Heroku 将日志看作一条一条的流式信息,它将这些输出发送到远端,集中管理、预警。 一个 PaaS 平台会提供大量的后端服务组件,包括持久化数据库、邮件 SMTP 服务、消息队列、缓存等。...Heroku 就为这些后端服务的访问定义了一套 add-ons API,从而实现了代码与某个固定服务的解耦。在 Heroku 上最流行的后端服务是 PostgreSQL 数据库

    6.4K20

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

    本文的主题是Rails,以及如何在线获取基于Ruby On Rail的 Web应用程序 - 这是最简单,最快捷的方式。...您仍然需要您的应用程序和数据库正常运行才能让Nginx客户端提供非错误消息的响应。...准备部署应用程序 注意:在本节,我们将使用一个非常简单的Ruby On Rails应用程序作为示例。对于应用程序的实际部署,您应该上传代码库并确保安装了所有依赖项。...创建示例应用程序/上传源代码 让我们首先在我们的主目录创建一个非常基本的Rails应用程序,以便与Passenger和Nginx一起使用。...执行以下命令以使Rails 在目录创建名为my_app的新应用程序/var/www: # Create a sample Rails application cd /var mkdir www cd

    5K20

    放弃“免费套餐”,Heroku的遗产又少了一个

    这句看似简单的话背后隐藏了巨大的复杂性,试想下某个软件或系统爆出安全漏洞后给你带来的窘境,又或者你想使用一个数据库服务时却不得不维护一个数据库实例。而在 Heroku, 这一切麻烦你都无需关心。...部署一个通用的栈非常困难,那时候,Rails 需要安装一个负载均衡器,每个服务器提供反向代理,CGI 进程,并且可以随时监控和执行所有必要的操作。...Heroku 是云计算的终极创意工厂——比如 “十二要素应用宣言(The Twelve-Factor App)” 、抗侵蚀和 DX,这些概念将会经得起时间的检验,但是在它们的受益者,很少有人会认识到它们与...甚至在 Heroku 的“内核”,你也可以进行交换,因此你仍然可以使用 Heroku 来构建、编排和监控你的应用,但是它们会在你自己的专用单租户服务器上运行。...“十二要素应用宣言(The Twelve-Factor App)”的“支持服务”描述了诸如数据库等持久性服务的“额外资源”,它作为孤立的资源存在,能够被任意地附加和分离到更短暂的应用

    4.6K40

    Heroku上一键部署Cloudreve网盘程序

    关于 使用redis:alpine镜像制作,默认开启Redis缓存服务 容器的Cloudreve版本 cloudreve_3.3.2_linux_amd64(#db7489f) 账户信息-请及时修改...使用alpine:latest镜像制作,默认开启Redis缓存服务 应用程序升级或变更时,配置文件与数据库均可保留 容器的Cloudreve版本 cloudreve_3.3.2_linux_amd64...Jawsdb Mysql(需要已验证的Heroku账户) Cloudreve with redis的Docker版本,内置Heroku Redis与Jawsdb Mysql 默认数据库空间5MB 一键部署在...Heroku上: image.png 关于 使用alpine:latest镜像制作,默认开启Redis缓存服务 应用程序升级或变更时,配置文件与数据库均可保留 容器的Cloudreve版本 cloudreve...(即 UID 1 的用户)的密码,新密码会在命令行日志输出,请注意保存。

    3.4K10

    关于“Python”的核心知识点整理大全64

    你需 要使用应用程序的名称,可以是Heroku提供的名称(afternoon-meadow-2775.herokuapp.com), 也可以是你选择的名称。...现在,请求一个不属于你 的主题或条目,以查看404错误页面;请求不存在的URL(localhost:8000/letmein/),以查看500 错误页面。...查看错误页面后,将DEBUG重新设置True,以方便你进一步开发“学习笔记”。(在settings.py 中用于Heroku部署的部分,确保DEBUG依然被设置False)。...如果在修改过程创建了新文件,使用命令git add . (千万别忘记这个命令末尾的句点)将它们加入到Git仓库。... 此,你可以使用一次性命令heroku run python manage.py migrate,也可使用heroku run bash打 开一个远程终端会话,并在其中执行命令python manage.py

    9410

    Ansible和Docker的作用和用法

    当然,你也会收获一些实践知识,那就是如何通过部署 Ansible 和 Docker 来 Rails 应用搭建一个完整的服务器环境。 也许有人会问:你怎么不去用 Heroku?...更厉害的是,它提供一套内建的、可扩展的模块库文件,通过它你可以控制所有的一切:包管理器、云服务供应商、数据库等等等等。 为什么要使用 Docker?...值得一提的是这个过程我没有配置任何数据库或程序开发语言,Docker 已经帮我把应用所需要的事情都安排好了。 Ansible 通过 SSH 远端主机发送命令。...最后,Dockerfile 应用指定了一个端口号,将容器内部端口号为3000的端口映射到主机(运行着 Docker 的机器)的一个随机分配的端口上。...Docker 容器内运行 Rails 应用 没有本地 Docker 镜像,从零开始部署一个中级规模的 Rails 应用大概需要100个 gems,进行100次整体测试,在使用2个核心实例和2GB内存的情况下

    2.1K20

    Heroku上部署Node.js

    今天,我们将演示如何在Heroku上部署Node.js应用。Heroku官方提供免费帐户使用,在此之上,我们最多可以托管5个应用程序。但如果你有大量需求的话,就需要购买特殊账户。...例如在文件名是app.js的情况下,Procfile文件的代码便web: node app.js。 让我们开始部署吧 步骤1 打开cmd,并找到项目的目录位置。...这个命令是为了将位于当前项目目录下的所有文件信息添加到索引库: 第3步 下一步是将文件的更改信息写入到创建的git仓库。...您可以为此应用起一个名字,或者可以让Heroku自己来决定一个随机的名字。 如果你想定义自己的应用的名字,可以使用命令:heroku create nameofapp。...如果您希望Heroku您决定应用的名称,请使用以下命令:heroku create。 第6步 现在我们剩下的最后一步就是将本地仓库的所有文件推送到服务器。

    3.6K80

    Spring Boot 项目部署到heroku爬坑

    ,比如heroku数据库的免费空间只有5M,且项目在30分钟内无人访问就会休眠,下面是heroku对于休眠的说明: By default, your app is deployed on a free...heroku的注册界面: PS: heroku的网站需要访问外国网站才能访问,并且设置访问外国网站软件的模式全局模式。...首先说一下正常的一个文件的Spring boot部署到heroku,需要在根目录添加一个Procfile文件,告诉heroku你要打包哪个文件,文件内容如下: web java -Dserver.port...=$PORT $JAVA_OPTS -jar target/*.jar ​ 但是本人的项目多个子项目打包,启动类在子项目中,这样如何来让heroku启动呢,自己不停的修改Procfile的文件路径仍然不起作用...,后来发现heroku中有一个很爽的命令,如下: $ heroku run bash ​ 这样就相当于远程登录一台Linux服务器啦,我们可以使用Linux命令查看自己部署在heroku上的项目的目录结构啦

    3.1K20

    GitHub 前 CTO:全面微服务是最大的架构错误!网友:这不是刚改完 GitHub 吗

    对于为什么不太看好微服务,Warner 给出的理由如下: 一般来说,整个工程团队在一个大型应用程序工作(想像 Rails 应用程序的整个站点),比推理微服务将以何种方式失败要容易得多。...GitHub 研发团队将生成的功能分组称为模式域,并记录在 YAML 定义文件。在数据库模式添加或删除表,都要更新这个文件。 接下来,对于每个模式域,团队找了一个分区键。...这是一个共享字段,将一个功能组的所有信息联系在一起。最终,创建数据库模式功能组帮助团队将数据拆分到微服务架构所需的不同服务器和集群上。...更常见的可能是根据每个数据集的特性(区域和大小)所做的逻辑分组。 GitHub 如何从单体抽取服务呢?GitHub 认为,依赖方向只能从单体内到单体外,不能反过来,否则最终会得到一个分布式单体。...GitHub 在单体外部将身份验证重写一个镜像服务。GitHub 的 Rails 应用程序(单体)使用 Twirp(这是一个 gRPC 风格的服务到服务通信框架)和它通信,依赖方向是由内到外。

    1K20

    轻松创建本地 SSL 证书:无需进行任何配置 | 开源日报 No.301

    ,用于创建本地可信任的开发证书,可以使用任何名称。...该项目的主要功能、关键特性和核心优势包括: 可以创建任意名称的本地开发证书 不需要进行任何配置 自动在系统根证书存储创建和安装本地 CA 生成本地可信任的证书 可以自定义证书的输出路径和格式 支持多个操作系统和浏览器的根证书存储...提供高级选项,生成客户端认证证书、使用 ECDSA 密钥、生成 PKCS #12 文件等。...该项目通过 Helm 可以实现以下功能和优势: 寻找和使用作为 Helm Charts 打包的流行软件,以在 Kubernetes 运行 将自己的应用程序分享 Helm Charts 创建可复现的...支持多种编程语言的示例用法,包括 Python、PHP、Go、Ruby on Rails 等,以及作为 PyPI 模块的可用性。

    15510

    SQLite 的性能优化其实挺难的,但是知道三个技巧让你的应用飞起来!

    SQLite 作为轻量级的数据库,在 Rails 项目中非常常见,特别是开发阶段。但问题来了,SQLite 真有我们想象那么简单吗?它的性能优化又需要注意什么呢?...想象一下,当有多个请求同时对数据库进行写操作时,瓶颈立马就出现了:写入速度会大大减慢,应用响应也会变得迟钝。那该怎么办呢?一个常见的解决办法就是利用事务。...使用正确的索引:别让查询成了性能杀手SQL 查询慢,这大概是所有数据库开发者的噩梦。如果你发现你的 Rails 应用在执行查询时总是慢半拍,很可能是因为你没有使用合适的索引。...通过上面提到的几个技巧——使用事务、添加合适的索引、采用批量操作——你完全可以让你的 Rails 应用在开发环境飞起来。...试试这些优化技巧,让你的应用不再“慢得像蜗牛”,而是轻盈燕。希望这篇文章对你有所帮助!如果你有任何关于 SQLite 或 Rails 开发的问题,随时来聊!

    22110

    关于“Python”的核心知识点整理大全65

    20.2.20 将项目从 Heroku 删除 一个不错的练习是,使用一个项目或一系列小项目执行部署过程多次,直到对部署过程了 指掌。然而,你需要知道如何删除部署的项目。...如果你喜欢在终端工作,也可使用命令destroy来删除项目: (ll_env)learning_log$ heroku apps:destroy --app appname 其中appname是要删除的项目的名称...你创建了一个Heroku账户,并安装了一些帮助管理部署过程的工具。你使用Git将能够正确运行 的项目提交到一个仓库,再将这个仓库推送到Heroku的服务器。...我们使用一个名为deadsnakes的包,它让安装多个Python版本变得很容易: $ sudo add-apt-repository ppa:fkrull/deadsnakes $ sudo apt-get...附录 D 使用Git进行版本控制 D.1 安装 Git Git可在所有操作系统上运行,但其安装方法因操作系统而异。接下来的几节详细说明了如 何在各种操作系统安装它。

    11510

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

    Puma是一个应用服务器,Passenger或Unicorn,它使您的Rails应用程序能够同时处理请求。...由于Puma不是用户直接访问而设计的,因此我们将使用Nginx作为反向代理,以缓冲用户与Rails应用程序之间的请求和响应。...如果没有,第一步是创建一个使用PostgreSQL作为其数据库的新Rails应用程序。 此命令将创建一个名为“appname”的新Rails应用程序,该应用程序将使用PostgreSQL作为数据库。...将生产密码和机密保存在应用程序代码库之外被认为是最佳实践,因为如果您使用的是分布式版本控制系统(Git),它们很容易暴露出来。接下来我们将讨论如何使用环境变量设置数据库身份验证。 保存并退出。...创建生产数据库 既然您的应用程序已配置与PostgreSQL数据库通信,那么让我们创建生产数据库RAILS_ENV=production rake db:create 生成控制器 如果您跟随示例,

    5.4K10

    我在学习编程犯的两个最大错误

    下面是大杂烩清单: HTML、CSS、 AJAX、 PHP、 Javascript、 Heroku、 Celery、 SQL、jQuery、 Django、POSTGRES、 nodeJS、 BackboneJS...、Ruby、 Rails、 MongoDB、 Python 在这些技术,我不知道哪些我需要学哪些不需要学,所以我试着把它们全部学习一遍。...HTML:构造一个网页的内容(链接,标题等元素的选择) 1. CSS: 内容的样式(鼠标移至链接上时改变它的颜色) 2....Javascript:使内容变成动态的(比如用户点击链接的时候弹出一个菜单) 3. jQuery: 一个包含容易使用插件的javascript库(幻灯片效果显示图片) 4....Python: 处理数据(如从数据库读取用户购买记录或推荐用户可能喜欢的产品) 5. Django: 一个用Python编写的web框架可以将以上的技术串联起来。

    1.1K90

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

    ); 数据库(通常是 PostgreSQL); 其他必要的基础设施( Redis、ElasticSearch、Mailhog); 有些应用程序实例偶尔也会做一些其他的事情,而不只是运行开发服务器(比如后台任务...另外,区分系统级依赖项( ImageMagick)和应用级依赖项( Rubygems 和 NPM 包)也很重要——前者应该包含在 Dockerfile ,后者不应该。...3 只在 docker-compose.yml 引用一次 Dockerfile 如果你将同一个镜像用于多个服务(你应该这么做),只需要在一个服务的定义中提供构建说明,给它起一个名字,然后在其他服务引用这个名字...举个例子,假设有个 Rails 应用程序使用一个共享的镜像来运行开发服务器和 webpack-dev-server,那么配置可能像这样: services: rails: image: appname_rails...5 将临时的东西放入命名卷 上一点提到使用命名卷来提高性能,这里有另一个有用的技巧:将保存只读文件的目录放入命名卷,阻止它们被同步回本地机器(这会带来很大的性能开销),特别是 log 和 tmp

    2.1K40
    领券