DB2 与 Ruby on Rails 入门之一


  Ruby 语言的出现并与强大的 Rails 框架结合,为 Web 解决方案的开发带来了巨大的机遇。随着 IBM_DB 适配器和驱动程序的引入,Rails 应用程序现在可以无缝地与 IBM 数据服务器进行交互。本文是 DB2 with Ruby on Rails 系列的第一篇文章。文中介绍了 Starter Toolkit for DB2 on Rails,谈到了安装 IBM_DB 驱动程序的多种方法以及使用 DB2 的 Rails 迁移。

  简介

  Ruby on Rails 发布于 2004 年,如今已快速成为 Web 应用程序开发中最流行的框架之一。这个开放源代码项目又名 Rails 或 RoR,它采用 Model-View-Controller (MVC) 架构和 Ruby 面向对象脚本编制语言,并遵循一些简单的原则,例如 “约定优于配置(convention over configuration)” 和 “不要重复自己(don't repeat yourself)”。因此,开发人员可以更快、更容易地构建应用程序,减少冗余的代码和配置文件,同时又能灵活地创建定制的扩展,以满足应用程序需求。通过对数据库持久性的支持,可以使用数据库服务器和内置的 WEBrick Web 服务器快速开发使用这种框架的 Web 应用程序。

  IBM_DB 为 Rails 领域带来了什么?

  随着 RubyForge 社区门户上开始提供 IBM_DB Rails 适配器和 Ruby 驱动程序,Ruby on Rails 框架经过官方测试,并且在所有 DB2 数据服务器上受支持。对于你们当中某些人来说这也许是个惊喜,社区还有一个免费版本的名为 DB2 Express-C 的 DB2 9 数据库可以使用。DB2 Express-C 数据服务器的开发、部署和分发是免费的,没有大小、时间或用户方面的限制,而且还包括了 Starter Toolkit for DB2 on Rails。这个包可以帮助开发人员在使用 DB2 的 RoR 环境中快速、轻松地设置和构建 Web 应用程序。

  虽然在 Rails 框架中可以配置的数据存储有很多种,但 DB2 数据服务器可以带来一些独特的、突出的优点。由于 DB2 9 中引入了 pureXML™,使用 IBM 数据服务器的首要优点是,IBM_DB 适配器和驱动程序支持本地 XML 数据类型。

  DB2 on Rails 入门

  目前有两种方法可以设置使用 DB2 的 Rails 开发环境。如果您对 DB2 环境不熟悉,那么可以借助 Starter Toolkit for DB2,这是开始进行 DB2 on Rails 应用程序开发的最方便的方式。Starter Toolkit version 2.1 可以从 alphaWorks 下载,其中还有一个稍旧版本的 IBM_DB 适配器的安装程序。这个版本不支持 i5 和 zOS 平台上的 DB2,但是更新工作正在进行,很快就会有新版本可供下载。

  在 IBM_DB 适配器和驱动程序 gem 及插件发布之后,如果要在一个已有的 DB2 环境中开发 Rails 应用程序,那么可以使用 “manual” 选项,这个选项使用起来同样也很轻松。请参阅 RubyForge rubyibm project 获得最新版本(从 4 月 30 日起,Production/Stable release 0.6.0 已经可用)。

  手动逐步安装 DB2 Express-C 9

  首先下载和配置 DB2 Express-C 数据服务器和 Rails 运行时环境。最新版本的 IBM_DB 适配器和驱动程序要求使用 DB2 9,FixPack 2 或 DB2 8,FixPack 15。为了下载和配置 DB2 Express-C 数据服务器和 Rails 运行时环境:

  •   访问以下网站,并下载 DB2 Express-C 9 FixPack 2 。
  •   下载 One-click Ruby Installer (包含 Ruby 和 Rubygems)。
  •   安装 Rails gem 及其依赖项:

  gem install rails --include-dependencies

  注 1:由于与 IBM_DB 驱动程序和适配器中的一些重要更改有关联的 CLI 修复包(与数值引用相关)的缘故,需要使用 DB2 Client 9 FP2。

  注 2:大多数 DB2 9 上的 Rails 应用程序都要求至少 1024 的 APPLHEAPSZ。 db2 update db cfg for using APPLHEAPSZ 1024

  为了更新 db cfg,需要对 DB2 进行重启(db2stop 加 db2start 命令)。

  只有手动安装 IBM_DB 适配器和驱动程序(方法 2)时才需要考虑这个问题,因为在最新的 Starter Toolkit for DB2 on Rails 中这个值是默认的。

  将 IBM_DB 适配器和驱动程序安装为 Ruby gem,与 Rails plugin 比较

  为了帮助理解 Ruby gem 安装与 Rails plugin 安装之间的区别,下面简要描述一下运行时环境。

  RubyGems 是用于 Ruby 运行时环境中的库和应用程序的标准打包和安装框架。对于每个 bundle,在一个中央存储库中会发布并存储一个遵从打包格式的名为 gem 的文件,以允许同时部署同一个库或应用程序的多个不同的版本。与 Linux 发布打包管理和 bundle(.rpm、.deb)类似,通过 gem 终端用户实用程序也可以查询、安装、卸载和操作这些 gem。gem 实用程序可以无缝地查询远程 RubyForge 中央存储库,并且可以查找和安装任何已有的能使 Rails 开发人员更轻松的实用程序。安装了 IBM_DB gem 之后,马上便可以在 Ruby 运行时环境中通过以下命令从任何脚本(和应用程序)中访问其功能:

  •   require 'rubygems'
  •   gem 'ibm_db' (在 Rubygems 0.9 中,require_gem 已经不赞成使用,而被 gem 替代)

  作为一个 ActiveRecord 适配器,在 Rails 框架中使用它之前,IBM_DB gem 需要由抽象适配器注册到它的 RAILS_CONNECTION_ADAPTERS (active_record.rb) 列表中。注册之后,会加载 IBM_DB gem 和它的依赖项(ibm_db Ruby driver、IBM Driver for ODBC 和 CLI)。这样便使得 Ruby 环境中的任何应用程序,包括 Rails,可以与 IBM 数据服务器交互。正如 IBM_DB gem README 文件(见本文 参考资料 小节)中描述的那样,每过几个简单的步骤,就要启用 Ruby 运行时,以访问 IBM 数据服务器。

  注 3:在 Windows 环境中,当运行 “gem install ibm_db” 时,对于每种版本(mswin32 或 ruby)有两个选择。通过选择 “mswin32”,可以安装预先构建的用于 Windows 的二进制文件。

  例子:

D:\>gem install ibm_db
Bulk updating Gem source index for: http://gems.rubyforge.org
Select which gem to install for your platform (i386-mswin32)
1. ibm_db 0.6.0 (mswin32)
2. ibm_db 0.6.0 (ruby)
3. ibm_db 0.4.6 (ruby)
4. ibm_db 0.4.6 (mswin32)
5. Skip this gem
6. Cancel installation

  将 IBM_DB 适配器和驱动程序安装为 Ruby Gem

  1、发出 gem 命令,安装 IBM_DB 适配器和驱动程序:

  D:\>gem install ibm_db

  2、将 ‘ibm_db’ 注册到 Rails 框架中的连接适配器列表中。

  将 ibm_db 手动添加到 gems\1.8\gems\activerecord-1.15.3\lib\active_record.rb:

  RAILS_CONNECTION_ADAPTERS = %w( mysql postgresql sqlite ... ibm_db )

  Rails 插件为该框架自身提供了扩展机制。通过这种机制,Rails 可以在一个特定的 Rail 应用程序范围内扩展其功能。因此,当 Ruby 运行时环境中没有部署 IBM_DB gem 时,这提供了另一种访问 IBM 数据服务器的方法。虽然 Rails 插件没有提供特定于 Ruby gem 的版本管理,但是它们提供了一种有用的初始化机制,该机制允许 IBM_DB 插件在其初始化期间自己插入到 Rails 注册表中。因此,在应用程序中以插件形式安装 IBM_DB 之后,无需任何手动步骤,就可以让 Rails 框架加载它。正如 IBM_DB 插件 README 文件和 RubyForge 上的 rubyibm 项目文档 中描述的那样,只需注册插件源,并运行 Rails 应用程序安装脚本,就可以启用 Rails 应用程序,以便进行 IBM 数据服务器访问。虽然 RubyForge 可以启用到 Subversion (SVN) 库的 HTTP 访问(目前只支持 SVN 协议),在 Windows 上安装 Rails 插件时,仍然需要一个 SVN 客户机。在大多数 Linux® 和 UNIX® 发行版上,SVN 客户机是默认提供的,这使得 IBM_DB 插件安装具有很好的无缝性。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3