安装了Rails框架之后,你同时也得到了一个新的命令行工具:rails。这个工具可以用于构造每个新的Rails应用程序。

为什么我们需要这么一个工具——我是说,为什么不抄起最顺手的编辑器,从头开始编写应用程序的每行代码呢?呃……我们确实可以这样做,但Rails可以在 幕后变很多戏法,让我们只需要做最少量的配置即可运行一个应用程序。为了让这些戏法能够生效,Rails必须能够找到应用程序中的各种组件。正如我们稍后 (在第13.2节,“目录结构”一节,原书第173页)将会看到的,这就意味着我们必须创建某种固定的目录结构,并且将我们的代码放在合适的地方。 rails这个命令可以帮我们创建这一目录结构,并且生成一些标准的Rails代码。

现在,我们来创建第一个Rails应用程序:打开shell窗口,进入文件系统的某个地方——你希望将应用程序目录结构保存在那里的某个地方。在我们的例 子中,我们将把项目创建在一个名为work的目录之下。因此,我们在这个目录中用rails命令创建一个名为demo的应用程序。在这里要加些小心:如果 已经存在一个名叫demo的目录,rails会询问你是否要覆盖已有的文件。

dave>   cd   work

work>   rails   demo

create

create   app/apis

create   app/controllers

create   app/helpers

:   :   :

create   log/development.log

create   log/test.log

work>

上述命令创建了一个名为demo的目录。进入这个目录,列出它的全部内容(在Unix中使用ls命令,在Windows中使用dir命令),你应该会看到这样的一堆文件和子目录:

work>   cd   demo

demo>   ls   -p

CHANGELOG   app/   db/   log/   test/

README   components/   doc/   public/   vendor/

Rakefile   config/   lib/   script/

突然面对那么多目录(还有它们包含的文件)也许会让你感到有点害怕,不过我们完全不用理会它们的存在。现在,我们只需要用到它们中的一个,也就是public目录。

正如它的名字所暗示的,public目录包含了我们希望暴露给最终用户看到的那些文件。这里的关键文件是分发器 (dispatcher):dispatch.cgi、dispatch.fcgi、以及dispatch.rb。分发器负责接收用户从浏览器发出的请 求,并将这些请求引导至应用程序中的程序代码。这几个文件很重要,不过我们目前还不需要接触它们。

你还会看到,在demo目录下有一个script子目录,其中存放的是一些工具脚本,我们在开发应用程序的过程中会用到它们。现在,我们就要使用其中名叫 server的脚本,它会启动一个独立运行的WEBrick[1]服务器,我们新建的Rails应用程序就将在其中运行。那么,在继续前进之前,我们先把 刚才编写(或者说,生成)的应用程序启动起来吧。

demo>   ruby   script/server

=>   Rails   application   started   on   http://0.0.0.0:3000

[2005-02-26   09:16:43]   INFO   WEBrick   1.3.1

[2005-02-26   09:16:43]   INFO   ruby   1.8.2   (2004-08-24)   [powerpc-darwin7.5.0]

[2005-02-26   09:16:43]   INFO   WEBrick::HTTPServer-start:   pid=2836   port=3000

从启动输出信息的最后一行就可以看出,我们在3000端口[2]上启动了一个web服务器。我们可以打开浏览器,访问http://localhost:3000,就会看到这个应用程序。
我们可以让WEBrick一直在这个命令行窗口中运行。稍后我们编写应用代码之后,只要在浏览器中访问,就会看到命令行窗口输出请求的相关信息。如果想要停止WEBrick的运行,可以在命令行窗口中按下Ctrl-C键。

现在,我们已经让新应用跑了起来,但其中还没有我们自己编写的代码。下面,我们就要改变这种情况。

[1]   WEBrick是一个纯Ruby编写的web服务器,随Ruby   1.8.1或更高版本发行。
[2]   URL地址中的“0.0.0.0”表示WEBrick会接收来自所有接口的连接。在Dave的OS   X系统上,这就表示不管来自本地接口(127.0.0.1和::1)还是来自LAN连接的请求都会被WEBrick接收到。

现在,我们来编写一个极其简单的web应用,以验证Rails已经成功地在我们的机器上落户了。在此过程中,我们还会简单介绍Rails应用的工作方式。