相思雨
The Apple of My Eye.

前面我们已经安装好了Ruby和Rails了,并能够通过gem来安装更多需要的包了。

接下来,我们需要再安装数据库。

默认情况下,RoR使用Sqlite作为存储数据的引擎,虽然说Sqlite在小型应用中已经足够了,而且其和MySQL比较兼容,迁移起来也比较容易。但是,考虑到大多的实际产品环境还是使用MySQL、Oracle这样的比较全面的数据库系统,因此,还是在本机上安装一个MySQL比较好。

安装MySQL

首先从dev.mysql.com上下载MySQL for Windows的版本,然后安装即可。

如果需要的话,还可以下载MySQL Workbench(推荐使用)来设计数据库;也可以下载MySQL GUI Tools来图形化的管理你的数据库服务器。

安装MySQL gem

安装了MySQL之后,如果你的Ruby还没有mysql驱动支持(集成的Instant Rails中已经有了),你需要安装Ruby中对MySQL的驱动支持。

gem install mysql

这将安装2006/12/29日的mysql-2.7.3-mswin32.gem。需要注意的是,这个驱动是支持Ruby 1.8的,目前在Windows(mswin32)上还没有兼容1.9的gem出现(mysql-ruby-2.8x已经支持1.9了,但是并没有编译好的gem出现,需要自己编译——而整个编译会很痛苦)。

2008/8/21日发布了 mysql-2.8.1-mswin32.gem,这个版本支持Ruby 1.9了。

测试Ruby中对MySQL 的操作

首先你要保证你的MySQL已经在本机安装成功并可以连接(此处用本机MySQL测试,root密码为空,你可以根据你的具体环境适当调整参数):

连接MySQL:

C:\Users\wxy>mysql -uroot mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.37-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
(省略)
| user                      |
+---------------------------+
23 rows in set (0.01 sec)

mysql> quit
Bye

C:\Users\wxy>
然后可以通过irb来测试一下Mysql模块是否安装成功:
C:\Users\wxy>irb
irb(main):001:0> require 'mysql'
=> true
irb(main):003:0> dbh=Mysql.real_connect("localhost","root","","mysql")
=> #<Mysql:0x263e9a0>
irb(main):004:0> res=dbh.query("show tables")
=> #<Mysql::Result:0x25ba320>
irb(main):005:0> res.each do |row|
irb(main):006:1* puts row[0]
irb(main):007:1> end
columns_priv
db
event
func
general_log
(省略)
user
=> #<Mysql::Result:0x25ba320>
irb(main):009:0> res.free
=> nil
irb(main):010:0> dbh.close
=> #<Mysql:0x263e9a0>
以上说明可以通过Ruby连接到MySQL并查询了。

转自:http://rordiary.com/blog/

posted on 2012-02-22 20:19  相思雨  阅读(451)  评论(0编辑  收藏  举报