rails与多数据库的连接有插件模式,也有原生模式,本文参考互联网资料,总结出来,并实际连接成功
1、配置database.yml
development:
adapter: mysql
encoding: utf8
database: myapp
username: root
password:
host: localhost
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: mysql
encoding: utf8
database: myapp
username: root
password:
host: localhost
typo:
adapter: mysql
database: typo
username: root
password:
host: localhost
说明:
1、typo是外部数据库,这是一个rails安装之后就存在的一个实例应用的库;
2、其他的development、test、production都是缺省的主数据库,这是缺省配置;
3、yml文件的书写方式非常严格,typo描述部分的下面各个参数必须采用tab的方式对齐,在netbeans中可以识别此格式,如果格式不对,将提示错误。
二、编写一个外部库的基础模型类
创建external_data.rb这个模型类
class ExternalData < ActiveRecord::Base
self.abstract_class = true
establish_connection :typo
end
说明:
1、self.abstract_class = true,表示这个模型类不会与库中的任何表有关系,也就是一个抽象的类。
2、establish_connection :typo,就是配置连接
三、编写一个具体的模型类
下面是typo库的表
+---------------------+
| Tables_in_typo |
+---------------------+
| articles |
| articles_categories |
| blacklist_patterns |
| categories |
| comments |
| page_caches |
| pages |
| pings |
| resources |
| schema_info |
| sessions |
| settings |
| sidebars |
| trackbacks |
| users |
+---------------------+
我们随便选择一个如,pages,实现它的模型;
创建文件page.rb,内容如下:
class Page<ExternalData
end
说明:
1、关键在于page这个类是从刚才定义的抽象类ExternalData中继承而来,有一个好处是这个抽象类下衍生出来的各个模型类可以共用连接池,减少数据库连接的消耗。
2、这种采用继承的方式非常方便创建其他表对应的类,不需要在模型中重复书写establish_connection :typo这样的语句。比如对settings这个表,创建setting.rb模型类文件,代码如下:
class Setting<ExternalData
end
与缺省库中的模型操作起来一样,不一样的就是父类不同而已。
四、测试看看是否成功
ruby script/console
>> ExternalData
=> ExternalData(abstract)
>> Page
=> Page(id: integer, name: string, title: string, body: text, body_html: text, text_filter: string, user_id: integer, created_at: datetime, updated_at: datetime)
>> Setting
=> Setting(id: integer, name: string, value: string)
没有问题。
分享到:
相关推荐
Rails多站点这个gem为Rails应用程序提供了多数据库支持。 使用其中间件,您可以对应用程序进行分区,以便每个主机名都有自己的数据库。 它提供了一系列用于处理多个数据库的帮助程序,以及一些用于处理这些数据库的...
本文介绍如何开始使用Ruby on Rails,读完本文后,您将...如何安装Rails,创建Rails应用,如何连接数据库; Rails应用的基本文件结构; MVC(模型,视图,控制器)和REST架构的基本原理; 如何快速生成Rails应用骨架;
传递参数会将您连接到不同的数据库,例如rails dbconsole production 。 目前适用于 MySQL、PostgreSQL 和 SQLite 3。 内容说明 生成的 Ruby on Rails 应用程序的默认目录结构: |-- app | |-- assets | | |-- ...
第2章 Rails应用的架构 9 2.1 模型,视图,以及控制器 9 2.2 Active Record:Rails的模型支持 11 2.3 Action Pack:视图与控制器 13 第3章 安装Rails 15 3.1 购物清单 15 3.2 Windows上的安装 15 3.3 Mac OS X上的...
这个gem是用于Rails应用程序的简单分片解决方案。 它是为在多租户应用程序中使用而创建的,在多租户应用程序中,数据在几个数据库之间进行了分区,但是可以通过相同的ActiveRecord模型进行访问。 基本上,这个gem是...
本文讲解如何从一个Rails应用程序连接到Oracle和与其相关的验证和性能问题。要连接到Oracle数据库,用户必须安装 Ruby/Oracle 调用接口 (OCI8) 库——一个基于 Ruby/DBI (数据库接口模块)的数据库驱动程序。Ruby...
添加 Rake 命令以转储和恢复应用程序的数据库。 委托常规转储实用程序,例如mysqldump和pg_dump 。 与它们不同的是,您不必记住任何正确的语法。 您也不必指定连接参数; 如果应用程序工作,转储程序也工作。 ...
最佳配置: 最小美洲狮线程 == 最大美洲狮线程# puma 线程数 == # ActiveRecord 连接池中的数据库连接数数据库连接限制(例如,20 个用于业余开发)> puma 进程 * puma 工人(例如 10 == 2 个工人 * 5
Rails Docker示例该应用程序的Docker设置来自以下: :入门要开始运行: docker-compose build 然后运行: docker-compose up 要连接到正在运行的应用程序容器,请运行: docker exec -it restarone_app /bin/sh 可以...
通过易于安装和设置的启发的Rails应用程序的健康检查,但其缺乏灵活性受挫,OK电脑诞生了。 它提供了一个强大的终结点,可以使用一组内置插件来执行服务器运行状况检查,还提供了一个简单的界面来添加您自己的自定义...
它需要运行Sidekiq,Redis和PostgreSQL,这表示生产Rails应用程序的标准部署堆栈。目标创建一种明智的方法来在Docker中运行相当复杂的Rails项目生成可复制和可定制的生产配置将与部署相关的所有内容存储在与应用...
阿米斯塔德Amistad将友谊管理添加到Rails应用程序中。 它支持ActiveRecord,Mongoid和MongoMapper。安装在您的Gemfile中添加以下行: gem 'amistad'然后运行: bundle install用法请参阅以获取用法和友谊管理文档。...
rails generate phrasing 迁移数据库rake db:migrate设置rake任务还将在您的app / helpers文件夹中生成phrasing_helper.rb 。 在这里,您将需要实现can_edit_phrases? 方法。 使用它来连接您现有的用户身份验证...
我还想探索Rails的更多高级功能,例如邮件和工作。 演示版 二手技术 -Ruby on Rails Ruby具有新手友好的语法,并且是我当时唯一了解的语言。 Rails是一个开发框架,它使抽象任务变得更加容易,并允许我干燥我的...
(Rails 应用进程保持与数据库的连接) 安装 在 Gemfile 中 gem "ardisconnector", require: true 请添加并捆绑。 检查中间件 $ rake middleware use Ardisconnector::Middleware . . 如果显示,则有效 数据库...
初始应用程序使用ruby on rails,为缓冲区创建一个克隆,我们可以在其中创建,连接我们的Twitter帐户并计划在特定时间发布的推文 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: ...
格雷塞特 通过pgreset gem,可以对具有活动连接的postgres...现在,您可以像往常一样运行rails db:reset,并且rails将终止与正在重置的数据库的活动连接: $ rails db:reset 发展历程 签出仓库后,运行bin/setup
该应用程序的主要目的是连接到GitHub API并创建Check Suites,如果测试套件报告内存使用或数据库请求量高于预期,则该套件将通过/失败提交。 希望您发现遍历代码很有用! 如果您想与我联系,可以在上找到我的详细...
MissionKontrol是一个管理面板,允许用户对一个或多个数据库中的数据进行CRUD。 该应用程序具有自己的数据库,用于存储配置和注释。 您连接到的数据库将直接更新。 单独的改善了写入/更新/删除验证。 我们正在考虑...