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的安装,这个安装做了如下的几个工作
- 在$ruby/lib/ruby/site_ruby/1.8/db2/目录下创建db2cli.rb
- 在$ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/connection_adapters/目录下创建ibm_db2_adapter.rb
- 在$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 )- 在$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"
endend
这样就定义了一个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
Companymaps tocompanies,Personmaps topeople, 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
本文介绍了如何在Ruby on Rails环境中配置和使用IBM DB2数据库,包括安装过程、配置数据库连接、创建应用及模型等内容,并展示了Rails如何简化数据库操作。
945





