Ruby on Rails 实践 读书笔记二

上一篇 / 下一篇  2008-10-12 15:27:15 / 个人分类:Ruby

反复试了几个小时,终于在我的Sql Server 2000环境中完成实践里的CRUD功能。

1、下载sqlserver_adapter.rb  存于{Ruby安装目录}\lib\ruby\gems\1.8\gems\activerecord-2.1.1\lib\active_record\connection_adapters下。

2、下载dbi-0.2.2.tar.gz ,解压后将\lib\dbd\ADO.rb复制到{Ruby安装目录}\lib\ruby\site_ruby\1.8\DBD\ADO下。

3、执行F:\Ruby\railsdoc>rails booksample2(railsdoc是我的项目目录)创建工程文件夹,rails将生成该应用程序的完整目录结构。

4、修改booksample2\config\database.yml文件,如下:

adapter: sqlserver
database: mybook
host: localhost
username: sa
password: dol

5、执行F:\Ruby\railsdoc\booksample2>ruby script/generate scaffold Book title:string description:text buydate:date,为Book类创建更多相关的数据库移植文件及model、controller、views文件。

6、先后执行rake db:create创建数据库和rake db:migrate创建表结构,但发生了以下错误:

F:\Ruby\railsdoc\booksample2>rake db:create
(in F:/Ruby/railsdoc/booksample2)

F:\Ruby\railsdoc\booksample2>rake db:migrate
(in F:/Ruby/railsdoc/booksample2)
rake aborted!
Open
    OLE error code:80004005 in Microsoft OLE DB Provider for SQL Server
      无法打开登录 'mybook' 中请求的数据库。登录失败。
    HRESULT error code:0x80020009
      发生意外。

(See full trace by running task with --trace)


打开数据库发现数据库并未建立(Why?...),于是在企业管理器中手动新建了一个名为mybook的数据库,再执行rake db:migrate,如下(如不执行此命令而手动建表的话,Create时会显示主键字段无法插入NULL值的错误信息):
F:\Ruby\railsdoc\booksample2>rake db:migrate
(in F:/Ruby/railsdoc/booksample2)
== 20081012063300 CreateBooks: migrating ======================================
-- create_table(:books)
   -> 0.0150s
== 20081012063300 CreateBooks: migrated (0.0310s) =============================

7、执行ruby script/server以启动WEBrick服务器,如下:

F:\Ruby\railsdoc\booksample2>ruby script/server
=> Booting WEBrick...
=> Rails 2.1.1 application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-10-12 14:40:25] INFO  WEBrick 1.3.1
[2008-10-12 14:40:25] INFO  ruby 1.8.6 (2007-09-24) [i386-mswin32]
[2008-10-12 14:40:25] INFO  WEBrick::HTTPServer#start: pid=3948 port=3000

8、在浏览器键入http://127.0.0.1:3000/books打开页面,但却发现输入中文是乱码,且Create后报错,如下:

DBI::DatabaseError: Execute OLE error code:80040E10 in Microsoft OLE DB Provider for SQL Server
至少一个参数没有被指定值。

9、在booksample2\config\environment.rb文件中添加如下代码:

require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8

10、Ruby on Rails实例中的CRUD功能就完成了,如下图所示:

F:\Ruby\railsdoc\booksample2>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

F:\Ruby\railsdoc\booksample2>rails -v
Rails 2.1.1

F:\Ruby\railsdoc\booksample2>gem -v
1.3.0

 


参考文章
如何在rails中正确使用MS Sql Server 2000做为数据库服务器
Rails Forum Tutorial for Beginners (Part 1 of 3)


TAG: rails sqlserver

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

我的存档

数据统计

  • 访问量: 0
  • 日志数: 4
  • 建立时间: 2008-10-10
  • 更新时间: 2008-10-12

RSS订阅

Open Toolbar