技术开发 频道

使用Ruby on Rails快速开发Web应用程序



构建一个简单的应用程序

在 Ruby on Rails Web 站点上有一些教程,可以完整地引导您创建一个简单的 Rails 应用程序(见 参考资料)。这里的示例程序与之类似,因为正确开始构建 Rails 应用程序的方式是确定的。由于此介绍的长度相对较短,所以我 极力 推荐那些较长的教程中的一篇,以使得您能够打好更为全面的基础。

示例应用程序是一个基本的通讯录。它演示了创建应用程序的一般步骤:

  1. 生成模型(在此步骤中创建 MySQL 数据库和表)。
  2. 生成应用程序(包括生成基本代码和目录)。
  3. 启动 Rails(并配置数据库的访问)。
  4. 创建一些内容(包括生成支架模型和控制器,并告知控制器去使用那个支架)。

我们将详细研究每一个步骤。

生成 AddressBook 模型

对于任何应用程序,您需要做的第一件事情是为它创建一个存放数据的数据库。技术上这个步骤不必非常先进行,不过需要在早期完成;应该在编写任何应用程序代码(甚至是自动生成的代码)之前创建数据库,这应该是显然的。所以,让我们在 MySQL 数据库中创建一个数据库,并在此数据库中创建第一张表。(阅读其他文档以了解如何安装运行 MySQL 或其他 RDBMS。)

我们假定 MySQL 已经安装并且可用。


清单 2. 创建 MySQL 数据库和表
[~/Sites]$ cat AddressBook.sql
            CREATE DATABASE IF NOT EXISTS AddressBook;
            USE AddressBook;
            CREATE TABLE IF NOT EXISTS contacts (
            id smallint(5) unsigned NOT NULL auto_increment,
            name varchar(30) NOT NULL default '',
            created_on timestamp(14) NOT NULL,
            updated_on timestamp(14) NOT NULL,
            PRIMARY KEY (id),
            UNIQUE KEY name_key (name)
            ) TYPE=MyISAM COMMENT='List of Contacts';
            [~/Sites]$ cat AddressBook.sql | mysql
            

在这第一张表中有些地方需要注意。最重要的是每一张表都必须拥有一个 id 列,列名称就是 id。Rails 使用主键列 id 来完成各种记录保持和引用任务。域 created_onupdated_on 是不需要的,不过,如果您使用了它们,那么 Rails 会自动地“在后台”维护它们;在大部分情况下使用这些时间戳没有什么不好。所以,您还要添加的“真正” 数据就只是通讯录内容的名称。

另一个稍微古怪的方面是,Rails 为不同的内容使用单数和复数的名称。根据上下文,各种条目会被重命名为单数或复数形式。表的名称应该使用复数格式。我没有使用不规则复数单词的经验;datumdata 等单词可能会令 Rails 出现问题。

生成 AddressBook 应用程序

既然已经拥有了一个能够交互的数据库,就可以创建 AddressBook 应用程序了。第一个步骤是简单地运行 rails 来生成基本目录和支架代码:


清单 3. 生成基本代码和目录
[~/Sites]$ rails AddressBook
            create
            create  app/apis
            create  app/controllers
            create  app/helpers
            create  app/models
            create  app/views/layouts
            create  config/environments
            create  components
            [...]
            create  public/images
            create  public/javascripts
            create  public/stylesheets
            create  script
            [...]
            create  README
            create  script/generate
            create  script/server
            [...]
            

我删减了运行 rails 的输出;所忽略了那些行只是提醒您已经创建的各种文件和目录。在您的系统上试运行它,浏览生成的所有文件。我已经在代码中显示了一些最重要的文件和目录。

运行 Rails

创建了 AddressBook/ 目录和所需要的子目录后,您需要执行一次惟一的初始配置。首先,通过修改 YAML 配置文件来设置数据库,如下:


清单 4. 配置数据库访问
[~/Sites]$ cd AddressBook
            [~/Sites/AddressBook]$ head -6 config/database.yml # after editing
            development:
            adapter: mysql
            database: AddressBook
            host: localhost
            username: some_user
            password: password_if_needed
            

最后,您需要提供数据。Rails 附带了它自己的单一功能的 Web 服务器,即 WEBrick,非常适用于我们的试验。您可能也会遵循 Ruby on Rails Web 站点上的说明来配置 Apache 或者其他服务器,以通过 FCGI(或者普通的 CGI,但是普通的 CGI 将会较慢)向 Rails 应用程序提供服务。


清单 5. 启动 WEBrick 服务器
[~/Sites/AddressBook]$ ruby script/server -d
            => Rails application started on http://0.0.0.0:3000
            [2005-03-21 17:57:38] INFO  WEBrick 1.3.1
            [2005-03-21 17:57:38] INFO  ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0]
            

创建一些内容

要在 WEBrick 端口上看到一个欢迎页面,先前的步骤就足够了。例如,在我的本地系统中,现在可以访问 http://gnosis-powerbook.local:3000/。不过,为了操作定制数据库,需要生成稍微多一些代码。可以使用脚本 generate 来完成此任务,这个脚本创建在 AddressBook/ 应用程序目录中:


清单 6. 支架模型和控制器代码的生成
[~/Sites/AddressBook]$ ruby script/generate model contact
            exists  app/models/
            exists  test/unit/
            exists  test/fixtures/
            create  app/models/contact.rb
            create  test/unit/contact_test.rb
            create  test/fixtures/contacts.yml
            [~/Sites/AddressBook]$ ruby script/generate controller contact
            exists  app/controllers/
            exists  app/helpers/
            create  app/views/contact
            exists  test/functional/
            create  app/controllers/contact_controller.rb
            create  test/functional/contact_controller_test.rb
            create  app/helpers/contact_helper.rb
            

注意,在相应的表名中,这里应该使用单数的 contact,而不是复数的 contacts

现在需要编辑一个或多个生成的文件(只需稍加编辑)来让控制器去使用支架:


清单 7. 告知控制器去使用支架
[~/Sites/AddressBook]$ cat app/controllers/contact_controller.rb
            class ContactController < ApplicationController
            model :contact
            scaffold :contact
            end
            

现在可以通过类似于 http://rails.server/contact/ 的 URL (在我的测试用例中是 http://gnosis-powerbook.local:3000/contact/)来查看和修改数据库的内容。输入一些数据后,它看起来如图 1 和图 2 所示:


图 1. 列出联系人
列出联系人


图 2. 编辑联系人
编辑联系人 

0
相关文章