ror学习笔记

本文介绍了如何在Ruby on Rails环境中配置和使用IBM DB2数据库,包括安装过程、配置数据库连接、创建应用及模型等内容,并展示了Rails如何简化数据库操作。

 

  type here -Jalphi 9/16/06, 9:09pm 

  • 下载ruby

http://rubyinstaller.rubyforge.org/

安装完毕后会将$ruby/bin加入到系统环境变量path中

  • 安装rails

运行gem install rails --remote

  •  配置数据连接

由于我使用的数据库是IBM DB2,因此费了不少周折,最终找到了IBM的官方数据库驱动http://www.alphaworks.ibm.com/tech/db2onrails/download

http://wiki.rubyonrails.com/rails/pages/IBM+DB2是一篇简单的介绍如何连接DB2的文章,最终的配置大概就是这个样子

 test:
  adapter: ibm_db2
  database: overtime
  username: db2admin
  password: Db2admiN
  host: localhost
  schema: db2admin
  port: 50000

 接着运行解压出来的setup.exe,完成DB2OnRails的安装,这个安装做了如下的几个工作

  1. 在$ruby/lib/ruby/site_ruby/1.8/db2/目录下创建db2cli.rb
  2. 在$ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/connection_adapters/目录下创建ibm_db2_adapter.rb
  3. 在$ruby/lib/ruby/gems/1.8/gems//activerecord-1.14.2/lib/active_record.rb文本中加入了ibm_db2关键字,象这个样子
     RAILS_CONNECTION_ADAPTERS = %w( mysql postgresql sqlite firebird sqlserver db2 oracle sybase openbase ibm_db2 )
  4. 在$ruby/lib/ruby/site_ruby/1.8/i386-msvcrt/目录下创建ibm_db2.so

其间我总是不能正确连上数据库,最终发现在gems目录下有两个ActiverRecord的版本,于是将两个目录下的有关DB2的东西都复制了一遍,终于正常,看来应该是DB2OnRails默认安装在低版本的ActiveRecord目录中,但是rails启动时选择高版本的ActiveRecord,因此无法载入DB2的Database_Adapter所致。

 

  • 创建应用

 我们准备好一个空目录例如F:/projects/railtest,进入这个目录,执行

rail cookbook

创建了一个web应用框架,生成许多文件。

 

 接着执行

 ruby script/server

会启动cookbook的web服务器(ruby内置的webrick http服务器),它会生成一个dos窗口,不要关闭,它如同Tomcat一样。

 访问http://127.0.0.1:3000/会看到webrick的欢迎界面。

 

接着创建第一个helloworld页面

ruby script/generate controller MyTest

会在$cookbook/app/controllers/目录下生成my_test_controller.rb文件,右键->编辑,(如果双击的化,就是执行了),会打开ruby自带的编辑器SciTE,(很怪的一个编辑器,还不太习惯),最终编辑成

class MytestController < ApplicationController
    def index
        render_text "hello world"
    end

end

这样就定义了一个index页面,访问它会返回html源码为render_text后面的文本。现在还不知道这些函数的作用,先不用管它,我们现在知道了如何给客户提供访问和如何返回响应了。

这其中index是默认的返回页面关键字,

如果你访问http://127.0.0.1:3000/MyTest和访问http://127.0.0.1:3000/MyTest/index效果是一样的,需要注意的是rails是区分大小写的,如果访问

http://127.0.0.1:3000/myTest将不会有响应。

 

  • 创建存取数据库的页面

执行

ruby script/generate controller Recipe

会创建recipe_controller.rb文件

ruby script/generate model Recipe

会创建recipe.rb文件

 在DB2中创建一个表recipes,字段的类型ruby会自动侦测,更奇怪的一点是它可以将Recipe映射到recipes两个不同的单词,这个机制要探讨一下,加入创建的表名很类似的化该如何映射喃?

编辑recipe_controller.rb文件如下

class RecipeController<ApplicationController

    scaffold :recipe

end

 访问:http://127.0.0.1:3000/recipe/new,魔法开始了,ruby自动显示需要填写的字段(除去了autoInc类型的字段)。并显示在web页面中,已经有了存取数据库的能力,而现在总共写了一行代码:scaffold :recipe

 

(看到rails教程中的一段话,可以解释上面的映射机制)

Rails is smart about English pluralization rules, so Company maps to companies, Person maps to people, and so forth

  •  一对多关系的web页面

例如recipe加个字段catalog_id外键指向catalog表的字段id

那么在models目录下的recipe.rb和catalog.rb文件做以下的改变

 

recipe.rb

class Recipe<ActiveRecord::Base

    belongs_to:catalog

end

catalog.rb

class Catalog<ActiveRecord::Base

    has_many:recipes

end

 

以上是Rolling with Ruby on Rails电子文档的阅读笔记,其中的ruby语法还不甚了解,有待系统的学习。
 

 这里有个如何部署apache解释ror的文章http://blog.youkuaiyun.com/sanshi0815/archive/2005/11/02/521129.aspx?Pending=true

 

 

 

 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值