ruby mysql驱动_windows下配置Ruby on Rails和mysql驱动

本文只限Window用户。

今天闹腾了半天,总算把ROR环境和Ruby-Mysql的驱动搞定。整理此文,献给和我一样入门的新手,希望能帮助大家早点配置好Ruby相关环境早点踏上Ruby的征途。

搜索方法:在主页右上角,选择"Software/Group",输入"软件名称",点击"Search"按钮。

该页面列出了Ruby当前的所有版本,写本文时最新版本是:1.8.6-25。版本发布日期:2007-03-18

2、下载"ruby186-25.exe",大约22M。然后安装。One-Click Installer 一键安装,很适合新手。

3、学过Java的都知道,接下来需要配置ClassPath,在环境变量中新增环境变量名"RUBY_HOME",变量值"D:\ruby",该值以本机Ruby安装目录为准。然后在 path 加入"%BURY_HOME%\bin"。

4、测试Ruby是否安装成功

在命令行下运行 ruby -v ,显示如下:

ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

如果不放心,再运行 ruby -e 'puts "hello world"'  ,显示如下:

hello world

至此,Ruby的安装告一段落,接下安装 Rails。

5、安装Rails之前需要按顺序安装以下模块:

最后才是 rails

注意: Rails版本与这五个模块版本要匹配才可以正确安装。

这里共享一下怎么匹配版本的方法。(以Rails

一、下载Rails 1.2.3.gem,在D:\rails目录下。

在命令行下进入"D:\rails",运行 gem install rails-1.2.3.gem  ,命令行会显示出错信息,仔细看该信息,你会发现

该信息中会提示在安装 rails之前必须安装 "activesupport -1.4.2",连安装模块的名称和具体版本都列出来了。

安装好"activesupport-1.4.2"之后,继续上一步骤,这次会提示安装"activerecord-1.15.3",其他模块的步骤都一样。

二、仔细看Rails 1.2.3版本的发布日期,是"2007-03-13"。因为这五个模块一般是和Rail同步发布的。你只需要在下载列表

中找到对应发布日期的模块下载即可。如果不是同一天,自然是找时间相隔最近的版本

到此,RoR环境告一段落。再推荐一篇文章,本人Ror环境之前也得益于该文档。

6、这个才是本文的重点,关于 Mysql数据库驱动配置,我的弯路就是在这里折腾的。

一、安装Mysql 5.0, http://dev.mysql.com/downloads/mysql/5.0.html 下载一个 Windows (x86) ZIP/Setup.EXE,如果是64位操作系统,请下载对应的版本。 我用的是 AMD64/WinXP

二、安装mysql时,记得字符编码要选择"utf-8",我之前用的gb2312,命令行读取没问题,但是用Ruy读出来的都是乱码。

三、在Mysql安装目录的 bin 目录下,找到 ibmySQL.dll,将该文件Copy到 Ruby安装目录的 bin目录中。这里也有一个版本的问题。我数据库用的是Mysql 5.0.41,每次操作数据库都会报"内存分配错误",没办法,只好 使用Mysql 5.0.37的 ibmySQL.dll 文件,问题解决。

四、http://rubyforge.org/projects/mysql-win ,下载 mysql-2.7.3-mswin32.gem ,这是 mysql_Ruby驱动程序。

命令行,进入该文件所在目录,运行 gem install mysql-2.7.3-mswin32.gem ,安装成功即可。

你也可以在 mysql官方网站下载 ruby的驱动,该网站附带安装步骤,API文档。

五、测试 mysql 驱动程序。

新建 mytest..rb ,代码如下:

ruby 代码

require 'mysql'

begin

dbh = Mysql.real_connect("localhost","root","root","library",3306)

## 创建表,插入计录,查询计录

dbh.query("drop table if exists test_rb")

dbh.query("create table test_rb(id int,name char(20))")

dbh.query("insert into test_rb values(1,'张三'),(2,'李四')")

printf"%d rows were inserted\n",dbh.affected_rows

res = dbh.query("SELECT name FROM test_rb")

puts"========\n"

whilerow = res.fetch_rowdo

printf"%s, %s\n", row[0], row[1]

end

puts"========\n"

puts"Server version: "+ dbh.get_server_info

rescueMysql::Error => e

puts"Error code: #{e.errno}"

puts"Error message: #{e.error}"

puts"Error SQLSTATE: #{e.sqlstate}"ife.respond_to?("sqlstate")

ensure

dbh.closeifdbh

end

在命令行运行 ruby mytest.rb,结果如下:

2 rows were inserted

========

张三,

李四,

========

Server version: 5.0.41-community-nt

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2007-05-27 17:49

浏览 5148

论坛回复 / 浏览 (9 / 14393)

评论

10 楼

zhuangj

2008-04-25

[color=cyan][/color][size=small][/size][align=left][/align]LZ好东西

9 楼

newpeter

2007-06-24

xiaoqiu369 写道

我按你的步骤做,出现了以下问题.C:/Documents and Settings/Administrator/user/demo/test.rb:16: uninitialized constant Mysql (NameError)

我这个例子有数据库访问操作。自然你需要建立数据库library,端口:3306。 表就不用创建了。

楼上说的InstantRails,我安装过,的确很省事。该有的都有。

但我自己一个一个安装,也可以多学点,毕竟写这篇文章时,也刚学习配置ruby环境。但作为新手,折腾自己是个必经过程。

8 楼

jwlhl

2007-06-20

是生产环境还是开发环境?

如果是开发环境,直接下载InstantRails,解压之后ruby、rails、apache、mysql什么都有了,甚至还有phpMyAdmin来做mysql的管理,而且都已经配置好了,直接可以用。

而且就算是生产环境,也可以用gem在线安装rails及其所有依赖的包吧,为什么要这样一个一个手动下载来安装呢?是因为网速的原因么?

7 楼

netfishx

2007-06-13

jack 写道

如果我没有记错的话,安装mysql,安装rails之后,直接就可以连接mysql了。无需额外操作,不太明白为什么还需要那么多额外的操作

生产环境额外安装mysql驱动有意义,那是c的实现吧

不过楼主的方式实在是。。。

6 楼

Readonly

2007-06-13

下载 InstantRails,然后...没有然后了...

5 楼

jack

2007-06-13

如果我没有记错的话,安装mysql,安装rails之后,直接就可以连接mysql了。无需额外操作,不太明白为什么还需要那么多额外的操作

4 楼

xiaoqiu369

2007-06-13

楼上说的是何意?因为刚接触这东西,不了解.

require_gem "mysql"

begin

dbh=Mysql.real_connect("localhost","root","admin","test",3306)

dbh.query("drop table if exists test_rb")

dbh.query("create table test_rb(id int,name varchar(20))")

dbh.query("insert into test_rb values(1,'ss')")

dbh.query("insert into test_rb values(1,'aaa')")

printf "%d rows were inserted\n",dbh.affected_rows

res=dbh.query("SELECT name FROM test_rb")

puts "===============\n"

while row=res.fetch_row do

printf "%s,%s\n",row[0],row[1]

end

puts "================\n"

puts "Server version:"+dbh.get_server_info

rescue Mysql::Error=>e

puts "Error code:#{e.errno}"

puts "Error message:#{e.error}"

puts "Error SQLSTATE:#{e.sqlstate}" if e.respond_to?("sqlstate")

ensure

dbh.close if dbh

end

改成这样就可以了.但是不知道是什么原因.

3 楼

jack

2007-06-13

用mysql有这么复杂吗?

2 楼

netfishx

2007-06-13

暴寒,这是故意折腾自己吗

1 楼

xiaoqiu369

2007-06-13

我按你的步骤做,出现了以下问题.C:/Documents and Settings/Administrator/user/demo/test.rb:16: uninitialized constant Mysql (NameError)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值