Jump To Content

Ruby on Rails实践(4)--- 做一个出来看看

      总算到了这激动人心的一步了。
      注明:以下示例大量参考了ONLamp.com (http://www.onlamp.com/) 上的 Ruby on rails 教程“Rolling with Ruby on Rails” 原网址: http://www.onlamp.com/lpt/a/5546

任务简介:


我们这里要用 rails 实现的是一个简单的网上书籍管理程序 mybook 。
我们所要完成的任务如下:
1:显示本人所搜藏的所有书籍
2:新增和编辑相应的书籍
3:将书籍指定不同的类别

在这里你会看到 rails 框架所展示的前所未有的易用性,整个程序你只需要真正输入一行代码,就可以完成数据库的 CRUD 操作(增删改查), 这不仅仅是完成数据库级别的操作,连所有相应的默认视图也都一并完成。 Rails 是我所用过的各种 web 应用框架中最最简单的一个,它的开发效率的确远远超过了任何一个 java 框架。
创建空的 rails 网页应用程序骨架
在 DOS 命令行窗口运行 rails mybook (本程序的工作目录是 D:\railsdoc>)

D:\railsdoc>rails mybook

create

create app/apis

create app/controllers

create app/helpers

create app/models

create app/views/layouts

create config/environments

create components

create db

create doc

create lib

create log

create public/images

create public/javascripts

create public/stylesheets

create script

create test/fixtures

create test/functional

create test/mocks/development

create test/mocks/test

create test/unit

create vendor

create Rakefile

create README

create CHANGELOG

create app/controllers/application.rb

create app/helpers/application_helper.rb

create test/test_helper.rb

create config/database.yml

create config/routes.rb

create public/.htaccess

create config/environment.rb

create config/environments/production.rb

create config/environments/development.rb

create config/environments/test.rb

create script/console

create script/console_sandbox

create script/destroy

create script/generate

create script/server

create script/runner

create script/benchmarker

create script/profiler

create script/breakpointer

create public/dispatch.rb

create public/dispatch.cgi

create public/dispatch.fcgi

create public/404.html

create public/500.html

create public/index.html

create public/favicon.ico

create public/javascripts/prototype.js

create doc/README_FOR_APP

create log/server.log

create log/production.log

create log/development.log

create log/test.log

D:\railsdoc>


       你可以看到, rails 已经为你生成了 mybook 应用程序的完整目录结构。
       Rails 不仅仅是一个运行时网络应用框架,它本身包含了丰富的脚本来帮你完成程序基本骨架的工作。
       运行 rails mybook 后, rails 将生成 mybook 应用程序的默认目录结构和初始化文件。
       Rails 开发的方式是: 由 rails 来生成默认的应用程序骨架,你所做的工作就是在默认目录结构中编辑文件增加应用程序逻辑就可以了。
      紧接着我们来测试一下空的应用程序,看看 rails 默认给我们完成了什么工作。
本程序的工作目录是 D:\railsdoc>, 上面 rails 已经给我们生成了mybook 目录,进入 mybook 目录。
       运行 ruby script\server 。 这条命令是运行 script 目录下的 server 命令来启动 webrick 服务器。
启动 webrick 服务器如下:

       打开浏览器 ,输入网址http://127.0.0.1:3000/ 你会看到类似的网页。
       暂时不要关闭这个窗口。
Webrick 简介:
Ruby 默认已经包含了丰富的软件,其中 webrick http 服务器就是其中之一。 这个程序包被用作 rubygem 的默认文档服务器。这是一个非常简单的纯 ruby 编写的服务器。如果你掌握了 webrick 你可以用几行代码来运行一个 web 服务器。
打开编辑器,编写以下脚本
require "webrick"
httpd = WEBrick::HTTPServer.new(
:DocumentRoot =>Dir::pwd + "/ruby",
:Port => 80
)
trap(:INT){ httpd.shutdown }
httpd.start

      然后保存到 c:\server.rb 下,双击 server.rb , 一个最简单的 http server 就运行了,它将 c:\ruby 目录作为服务器文档根目录。
     在浏览器窗口打开 http://127.0.0.1/
      你将会看到 c:/ruby 目录的内容,我们的 8 行 ruby 代码就生成了一个简单 http 服务器。你不光可以定制文档根目录,你还可以象编写 java servlet 那样,为 webrick 编写 ruby servlet 代码。具体详细信息参看 www.webrick.org
        Rails 开发工作的大部分集中在创建和编辑 apps 目录下的文件。让我们首先来了解一下这个目录下的结构。
Apps 目录下包含四个主要目录,它们分别是
Controllers, models, views, helpers
1:Controllers 目录存放 rails 应用中相应的 controller 类,controller 类处理来自用户的 web 请求。
2:views 目录存放相应的模板文件,模板文件填充数据后,转换为 html 格式传递给用户的浏览器。
3:models目录存放数据模型类,模型类封装了数据库中的数据。很多框架在数据模型层都做的比较复杂,用过 rails 后,你会发现它非常容易使用。
4:helpers 目录存放了简化 Controllers, models, views 使用的帮助类。

编辑 controller 类

      开始使用 Rails 之前,我们需要了解一下 rails 是如何将 controller 类中的方法和 url 映射到一起的,这对于理解 rails 工作原理很重要。
       rails 在生成的 skeleton 框架中包含了一个 scripts 目录,这个目录中包含了很多脚本程序,它们可以帮助我们来简化很多工作,我们已经使用过了 script\server 这个脚本,它是用来启动 webrick 服务器的。现在我们看看如何生成默认的 controller 文件
      打开新的 DOS 命令行,运行 ruby script\generate controller MyTest
      D:\railsdoc\mybook\app\controllers 目录中将生成一个包含 MyTestController 类定义骨架的名为 my_test_controller.rb 的文件
鼠标右键点击此文件,选择”edit” 打开编辑此文件。

在浏览器中访问 http://127.0.0.1:3000/My_Test/,
       浏览器响应没有找到对应的 index 方法,不要担心,这不是什么大问题,因为默认生成的控制器类,不包含任何方法。不过这里我们了解到,如果不输入任和 url 连接的话,默认rails 需要在控制器类中找一个 index 的方法。这很容易理解,类似于 apache 服务器中目录下面的 index.html 文件一样。
我们现在编辑这个 MyTestController 类。
如图:
       重新刷新刚才的页面 http://127.0.0.1:3000/My_Test/ ,你会看到如下结果
       继续编辑这个控制器类,
       保存文件后,在浏览器中运行 http://127.0.0.1:3000/My_Test/hello
        这下你了解到 rails 是如何将 url 和控制器中的函数做简单映射的了吧。
        这里需要做一些解释,在运行 ruby script\generate controller MyTest 的时候, rails 做了一些默认的假设。 MyTest 对应的 controller 文件是 my_test_controller.rb, 文件中控制器类名是 MyTestController,而 url 映射是 /My_Test/ .
       这些默认规定的好处是:我不需要编辑复杂的配置文件,只要对相应的文件做编辑就可以了。我们只需要关注程序逻辑,而不是其它什么,这就是 rails 设计原则中的“习惯约定优于配置”。
另外我们也感觉到 ruby 动态语言的好处,这点是 java 所无法办到的。我们在编辑完 controller 后,重新刷新页面,就可以使程序生效。对于编译型的 java 语言来说,不重新编译,重新启动服务器是无法做到这点的。
        Rails 开发的易用性可见一斑了,要知道启动和编译都是非常耗费时间的,尤其对于那些 EJB 服务器来说更是如此。
  • Your comment will be modifiable for 10 minutes after posted.

Page Author

Avatar
val
Name
val

From Here You Can…

Information

Most Recent Related Content

Published In…

© 2008 Valiant, All Rights Reserved.