查看文章 |
如果你喜欢,你可以抱着笔记本,泡在浴缸里来看这篇文章。也许你会疑惑:“为什么我需要一种新的脚本解释语言?为什么不使用到处可见的 Perl或者PHP,也许Python和Unix Shell也不错。为什么人们整天在谈论Ruby呢?” 正如很多精彩的事情一样,虽然日本人在90年代就发明了Ruby,但Ruby一直到最近才得到人们的关注。Ruby是纯面向对象语言。所有的东 西全是对象(很酷吧),即便是整数和字符串都有内在的方法和属性。举个例子: print "Webmokey".reverse "yeknombeW" 为什么说Rails很酷 正是Rails的出现使得Ruby得到了更多的关注,Rails是使用Ruby开发Web应用程序的框架。目前Ruby on Rails已经被用来开发高度可定义 的网站,如:Basecamp 和 Backpack。 Rails不仅仅是把Ruby联系在WEB上的万能胶。当然,你可以把Ruby脚本作为Apache的CGI来调用,从而不使用Rails仅使用Ruby来开发Web。 Rails是一整套建立结构与数据库操作通用代码的编程工具集。这极大的减轻了建立一个网站所需要的烦琐工作,同时也使代码结构更加紧凑和 健全,使开发变的更加容易。犹如在一个有优良组织结构的公司里工作,你可能需要花一点时间知道谁坐在哪里以及他们负责什么事务,但一 旦你理解了这个结构,你就可以避免整天在一些烦琐细小的事情上浪费时间。 Rails使用MVC构架(Model-View-Controller,模型-视图-控制框架),它清晰的分离开了应用程序的数据库及表现(模型)、用户界面( 视图)和逻辑功能(控制)。这么做的好处目前还有争议,但如果你编写的是一个不整洁和不可共享的程序,那肯定是一件很烦琐的工作。使 用Rails开发相当容易,“我花了6个小时就轻易的在手机平台上建立了一个支持Ajax和ToDo列表管理的社会网络拍卖网站。”不论Rails是否真 的有那么好,这些激动人心的事——如成百上千的开发人员所说的建立一个WEB应用只需要24小时——是会传染的。现在让我们加入这个 群体! 安装Ruby和Rails 为了便于和当前的WEB应用整合,Rails可以以CGI或FastCGI的方式运行在Apache下。可以使用它内置的WEB服务器——WEBrick运行, WEBrick使用Ruby开发,默认端口为3000,因此你可以方便的在开发机器上使用WEBrick测试RoR应用程序。我们将从安装Ruby,然后安装Rails (你同时需要一个数据库服务器,MySQL或PostgreSQL)开始。官方的安装说明更容易理解,比我希望的还要详细。目前Rails还没有Perl和PHP 那样普遍的得到虚拟主机提供商的支持。如果你想在一个虚拟主机上安装,方法可能会有所不同。你可以要求服务商为你安装,或者你自己克 服困难安装。如果你只是想在本地计算机上安装测试,在这里可以找到Curt Hibbs的安装手册。本文中我们将使用内置的web服务器WEBrick, 你可以稍后再配置Apache RoR环境。 开始使用RoR 当你在系统上安装完RoR后,这个过程将变的非常简单。让我们从建立一个基本的应用程序开始。一个书签管理程序怎么样?不过在此我们 仅仅介绍最开始的部分,你并不能得到一个非常完善的书签管理程序。现在抓好你的秒表——让我们纪录下建立这个网站到底需要多少时间! 第一步:建立数据库 建立一个MySQL的数据库。需要注意的是Rails有一些特别的规则,在数据库中的表名应该采用复数,例如不使用单数的Apple做表名,而使 用Apples;表的关键字应该称为"id",一个非空自增的整形。我想在表中存储Url,名称(name)和书签描述(description)。通过MySQL的命令界 面,我们可以这么建立数据库: mysql> CREATE DATABASE bookmarker; mysql> USE DATABASE bookmarker; mysql> CREATE TABLE bookmarks ( -> id SMALLINT (5) NOT NULL auto_increment, -> url VARCHAR (255), -> name VARCHAR (100), -> description VARCHAR (255), -> PRIMARY KEY (id)); 第二步:建立程序脚手架 现在开始变魔术了。不管是建立什么样的Rails的应用程序,一旦建立数据库后的第一步总是建立一个空的初始框架。进入合适的空目录, 在命令行里输入魔法命令: rails Bookmarker dir Bookmarker [.] [..] [app] [components] [config] [db] [doc] [lib] [log] [public] Rakefile README [script] [test] [vendor] CSS和javascript脚本也都应放在public目录中。 app目录是我们应用程序的核心,包含了一些元素: dir Bookmarker/app [.] [..] [controllers] [helpers] [models] [views] HTML结果输出。每个方法都有一个模板。 log里包含日志,doc将用来存放文档。script里放一些有用的可执行脚本。config存放配置信息。 config/database.yml是一个YAML文件,它用来告诉Rails连接数据库的信息。现在使用文本编辑器打开database.yml并修改第一部分: development: adapter: mysql database: bookmarker host: localhost username: root password: s3cr3t ruby script/generate scaffold Bookmark 我们刚才已经建立了一个控制器,一个模型和几个视图。现在我们使用Rails内置的Web服务器来看一看我们将完成的网站。请确定你的防 火墙已经正确设置,允许你访问WEBrick的3000端口。 ruby script/server 。仅使用了一行命令就实现了对书签的添加、删除、浏览操作。现在可以停止你的秒表了,纪录一下建立一个网站共需要多少时间。现在你明 白了为什么人们总是说使用Rails建立一个网站是多么容易了?余下的工作就是自定义化,毕竟没有多少人会喜欢Rails所生成的界面(除非你 是个怪人)。 第三步自定义以及其他 应用程序的所有Ruby方法——添加、删除、修改——都是在app/controllers/bookmarks_controller.rb里定义的,显示都是通过.rhtml模 板来控制的。Rails开发的核心工作就是在这些模块里添加自己的代码,把一个基本显示—编辑-删除功能开发成完整的网站。 现在让我们为每一个书签添加一个指向它实际网址的链接。先来看一下views/list.rhtml。Ruby的.rhtml模板是使用<%=和<%标签来表示 Ruby代码(熟悉Web开发的人肯定不陌生吧)。<%=是用来在浏览器中输出东西,而<%是用来在后台运行Ruby代码。views/bookmark.rhtml中我 们可以看到: <%= link_to 'Show', :action => 'show', :id => bookmark %> <%= link_to 'Edit', :action => 'edit', :id => bookmark %> 签增加新链接——指向书签页的链接: <%= link_to 'Open', bookmark["url"] %> 在结束前,让我们来看一个更加复杂一点例子。因为书签管理器允许用户手动输入URL地址,书签管理器应该检查用户输入地址的合法性, 例如判断地址是否以"http://"开头。 正如我们所期望的那样,Rails已经提供了相应方法。在models/bookmark.rb中增加一个方法调用: validatesformatof :url, :with => /^http\:\/\//, :message => "needs to begin with 'http'." 他会在标题显示错误信息。 今天的时间已经不多了,请继续工作进一步完善你的程序。学习一些Ruby——基本上一学就会。你愿意的话可以增加一个 public/stylesheets/scaffold.css,并为控制器增加一些新的功能,修改数据库的模型,增加Ajax等。 翻译自:Paul Adams的《Getting Your Feet Wet With Ruby on Rails》,有所更改。 |

