在Windows Vista上安装Ruby on Rails和配置MySQL

时间:2021-08-10 05:55:06

 安装Ruby On Rails

 1. 下载Ruby,我用的是1.8.6,下载地址:http://rubyforge.org/frs/?group_id=167。下载后直接双击安装就可以了。

 2. 在命令行窗口中,运行gem命令,看是否已经包含了rubygems。如果没有,则下载,然后运行ruby setup.rb安装;若已经包含,进入第3步。

 3. 在命令行窗口中,直接运行gem install rails开始安装Rails。

 4. 运行rails myapp就可以创建一个名称myapp的ROR程序。

这样就完成了Ruby On Rails的安装,并且创建了myapp程序,接下来就为其添加MySQL数据库支持。

 

安装MySQL

1. 下载MySQL(http://dev.mysql.com/downloads/mysql/5.1.html#win32),这里使用的MySQL5.1.31.

2. 安装MySQL,并配置MySQL,其中要选中Include Bin Directory in Windows PATH。

3. 创建数据库。运行MySQL Command Line Client,登录后运行:

    mysql> create database myapp_development;

 

配置MySQL

1. 首先运行gem install mysql命令,绑定mysql数据库。

2. 编辑myapp目录中config/database.yml文件。其中默认的可能是SQLite数据库,这里修改为MySQL数据库,以development为例:

3. 注意这时候应该重启电脑,否则如果直接启动服务器,访问http://localhost:3000,页面上就弹出libmysql.dll错误提示。重启后,再访问就可以在首页中看到环境信息,如下:

Ruby version 1.8.6 (i386-mswin32)
RubyGems version 1.3.1
Rails version 2.2.2
Active Record version 2.2.2
Action Pack version 2.2.2
Active Resource version 2.2.2
Action Mailer version 2.2.2
Active Support version 2.2.2
Application root D:/rails/myapp
Environment development
Database adapter mysql
Database schema version 10

  TroubleShooting

 数据库已经连上了,下面就是创建数据库表了。由于已经在Ubuntu上创建过类似程序,这里就把编写Migration文件的步骤和时间省去了,直接运行rake db:migrate,就在这时问题出现了。问题表现出两种情况:

  1. 错误信息为

(in D:/rails/myapp)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
undefined method `each' for #<Mysql:0x5cdda84>

在该种情况中,可能会有部分migration运行成功,但是并不能顺利执行。

2. 错误信息中包含了:ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/module/introspection.rb:73: [BUG] Segmentation fault

无论这两种情况有时候会交替出现,当然导致的结果就是migration不能顺利执行。

 

原因分析:MySQL中包含的libmysql.dll不能正常运行。

 

解决方法:
替换自带的libmysql.dll,该方法已验证,下载地址:http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll 保存到ruby安装目录的bin中。
重新运行rake db:migrate,终于看到了

(in D:/rails/myapp)
==  AddInitialData: migrating =================================================
==  AddInitialData: migrated (0.2270s) ========================================

==  AddUserData: migrating ====================================================
==  AddUserData: migrated (0.1280s) ===========================================

==  CreateSessions: migrating =================================================
-- create_table(:sessions)
   -> 0.0810s
-- add_index(:sessions, :session_id)
   -> 0.2780s
-- add_index(:sessions, :updated_at)
   -> 0.2270s
==  CreateSessions: migrated (0.6020s) ========================================

==  CreateAppliances: migrating ===============================================
-- create_table(:appliances)
   -> 0.0550s
==  CreateAppliances: migrated (0.0590s) ======================================