连接数据库

ActiveRecord通过抽象数据库连接简化了程序处理细节。支持多种数据库并可通过establish_connection方法指定连接。此外,Rails应用程序通常在config/database.yml文件中配置这些连接。
连接数据库
Active Record 把数据库连接的概念抽象出来,有助于程序处理各种特殊数据库的底层
细节。相反,Active Record 应用程序使用通常的调用,代理了一组数据库适配器的细节。
(This abstraction breaks down slightly when code starts to make SQL-based
queries, as we’ll see later.)
指定连接的一种方式是使用establish_connection()类方法。[在Rails 应用程序中,
另一种特殊的连接方式,我们在178 页讨论。]举例来说,下面调用在服务器dbserver.com
上使用给定的用户名字和口令,创建了一个对名为railsdb 的MySQL 数据库的连接。这是所
有的model 类共用的缺省连接。
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "dbserver.com",
:database => "railsdb",
:username => "railsuser",
:password => "railspw"
)
Active Record 支持DB2,MySQL,Oracle,Postgres,SqlServer 和SQLite 数据库。每
个适配器都接受有些不同的连接参数,像图14.2 显示的。注意:Oracle 适配器被称为oci。

连接和model 类相关,每个类都从父类中继承了它的父类的连接。ActiveRecord::base
是所有Active Record 类的基类,对于你定义的所有Active Record 类设置一个缺省的连接。
但是,在你需要时,你可以覆写它。
下面的例子,我们大多数应用程序的表基本上是在MySQL 中的online 数据库。但由于某
种原因,customer 表在backend 数据库中。
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "dbserver.com",
:database => "online",
:username => "groucho",
:password => "swordfish")
class LineItem < ActiveRecord::Base
# ...
end
class Order < ActiveRecord::Base
# ...
end
class Product < ActiveRecord::Base
# ...
end
class Customer < ActiveRecord::Base
# ...
end
Customer.establish_connection(
:adapter => "mysql",
:host => "dbserver.com",
:database => "backend",
:username => "chicho",
:password => "piano")
当我们在本书先前版本中写Depot 应用程序时,我们没有使用establish_connection()
方法。相反,我们在config/database.yml 文件内指定连接参数。对大多数Rails 应用程序
来说,这会很好地工作。这并不只是在代码外部保持了所有连接信息,它对Rails 测试和开
也会很好地工作。图14.2 中的所有参数也可用在YAML 文件中。它的更多细节在178 页的13.3
节中。
最后,你可以结合这两种方式。如果你传递一个符号给establish_connection(),Rails
查看database.yml 文件内段的名字,并以找到参数进行连接。这样你可以在你的代码外面保
持所有的连接细节。
先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占空比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占空比指的...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值