论坛首页 编程语言技术论坛

windows下配置Ruby on Rails和mysql驱动

浏览 14666 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-27  

本文只限Window用户。

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

注意: ruby 的资源都可以在  http://rubyforge.org/  搜索到。

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

1、安装Ruby,http://rubyforge.org/projects/rubyinstaller/ 找到"最新发布项目",点击"下载",进入下载列表页面。

该页面列出了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之前需要按顺序安装以下模块:

activesupport   http://rubyforge.org/projects/activesupport

activerecord      http://rubyforge.org/projects/activerecord

actionpack        http://rubyforge.org/projects/actionpack

actionmailer      http://rubyforge.org/projects/actionmailer

actionwebservice(简称aws) http://rubyforge.org/projects/aws

最后才是 rails

rails               http://rubyforge.org/projects/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环境之前也得益于该文档。

 http://www.iteye.com/topic/35929       关于Rails入门可以参考一下

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 代码
  1. require 'mysql'   
  2. begin  
  3.   dbh = Mysql.real_connect("localhost""root""root""library",3306)    
  4.   
  5. ## 创建表,插入计录,查询计录   
  6. dbh.query("drop table if exists test_rb")   
  7. dbh.query("create table test_rb(id int,name char(20))")   
  8. dbh.query("insert into test_rb values(1,'张三'),(2,'李四')")   
  9. printf "%d rows were inserted\n",dbh.affected_rows   
  10.   
  11.   res = dbh.query("SELECT name FROM test_rb")    
  12. puts "========\n"  
  13. while row = res.fetch_row do    
  14. printf "%s, %s\n", row[0], row[1]    
  15. end    
  16. puts "========\n"  
  17. puts "Server version: " + dbh.get_server_info    
  18. rescue Mysql::Error => e    
  19. puts "Error code: #{e.errno}"    
  20. puts "Error message: #{e.error}"    
  21. puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")    
  22. ensure    
  23. dbh.close if dbh    
  24. end   
 在命令行运行 ruby mytest.rb  ,结果如下:

2 rows were inserted
========
张三,
李四,
========
Server version: 5.0.41-community-nt

 

 

   发表时间:2007-06-13  
我按你的步骤做,出现了以下问题.C:/Documents and Settings/Administrator/user/demo/test.rb:16: uninitialized constant Mysql (NameError)
0 请登录后投票
   发表时间:2007-06-13  
暴寒,这是故意折腾自己吗
0 请登录后投票
   发表时间:2007-06-13  
用mysql有这么复杂吗?
0 请登录后投票
   发表时间: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
改成这样就可以了.但是不知道是什么原因.
0 请登录后投票
   发表时间:2007-06-13  
如果我没有记错的话,安装mysql,安装rails之后,直接就可以连接mysql了。无需额外操作,不太明白为什么还需要那么多额外的操作
0 请登录后投票
   发表时间:2007-06-13  
下载 InstantRails,然后...没有然后了...
0 请登录后投票
   发表时间:2007-06-13  
jack 写道
如果我没有记错的话,安装mysql,安装rails之后,直接就可以连接mysql了。无需额外操作,不太明白为什么还需要那么多额外的操作

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

不过楼主的方式实在是。。。
0 请登录后投票
   发表时间:2007-06-20  
是生产环境还是开发环境?

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

而且就算是生产环境,也可以用gem在线安装rails及其所有依赖的包吧,为什么要这样一个一个手动下载来安装呢?是因为网速的原因么?
0 请登录后投票
   发表时间:2007-06-24  
xiaoqiu369 写道
我按你的步骤做,出现了以下问题.C:/Documents and Settings/Administrator/user/demo/test.rb:16: uninitialized constant Mysql (NameError)

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

楼上说的InstantRails,我安装过,的确很省事。该有的都有。
但我自己一个一个安装,也可以多学点,毕竟写这篇文章时,也刚学习配置ruby环境。但作为新手,折腾自己是个必经过程。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics