Agile Web Development with Rails 翻译(五)

Agile Web Development with Rails 翻译(五)
第四章 最后的安装

 

 

让我们写个小web应用程序来确认你们机器是否正确地安装了Rails。这样,我们也可大致地浏览一下Rails应用程序的工作方式。

 

 

2006年4月16日更新


4.1 创建个新应用程序

 

在安装Rails框架时,你也得到了一个新的命令行工具,rails,它被用于构造每个新的Rails应用程序。

 

我们用这个工具能做什么?毕竟,Rails应用程序只是个Ruby源代码。但是Rails在背后也做了像魔术样的工作,使我们的应用程序只需要最小化配置就能工作。要想让这个魔术工作,Rails需要找到你应用程序的各种组件。就像我稍后会看到 (173页第13.2节的目录结构),这意味着我们需要创建一个特定的目录结构,并将我们写代码放到合适的位置上。rails 命令简单地为我们创建这个目录结构并组装一些标准的Rails代码。
要创建你的第一个Rails应用程序,只要打开命令行窗口并定位在你想为你的应用程序目录使用的位置。在我们的例子里,我们在目录work内创建应用程序。在这个目录中,使用rails命令来创建一个叫demo的应用程序。此处要小心些,如果你已有个现有目录叫demo的话,系统会提示你是否要覆写它现有的文件。
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的目录。进入这个目录,列出它内容。你应该看到一组文件和子目录。
work> cd demo
demo> ls -p
CHANGELOG app/ db/ log/ test/
README components/ doc/ public/ vendor/
Rakefile config/ lib/ script/
现在,我们并不使用所有目录,我们只使用这些目录中的一个,public目录。
就像它的名字所暗示的,public目录包含我们最终用户要使用文件,即我们应用程序的用户。发布的关键文件是:dispatch.cgidispatch.fcgidispatch.rb这些文件的责任是接受用户的请求并用我们应用程序内代码来做出相应的响应。它们是很重要的文件,但我们现在还不想碰它。
你也会注意到demo目录下有个script目录。它包含了一些工具脚本,这些脚本会让我们配置我们的应用程序。现在,我们使用名为server的脚本。它启动一个Web服务,它会在WEBrick[一个纯Ruby写的web服务程序,它被发布在Ruby 1.8.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
在Start-up tracing指令的最后一行,我们在端口3000[0000端口地址意味着WEBrick将接受所有界面连接,在OS X系统中,那意味着本地界面127.0.0.1和LAN连接两者。]启动了一个Web服务。我们可以通过在浏览器中输入http://localhost:3000来访问应用程序。结果如图4.1所示。

 

 

 

离开WEBrick运行的命令行窗口。稍后,我们写应用程序代码并通过我们的浏览器来运行它,当我们执行完应用程序时,可以按下Ctrl-C来中止WEBrick的运行。
此时,我们已经运行新的应用程序,但我们还没有写代码。让我们开始吧!

 

 

4.2 Hello, Rails!

 

Dave说:我不想做什么—我只是想写一个Hello,World!程序来试试新系统。Rails内的等价物是发送我们的问候给浏览器的应用程序。
像我们在第二章讨论的,Rails应用程序体系,Rails是个“模型-视图-控制器”框架。Rails接受来自浏览器的请求,解码这个请求并寻找一个“控制器”,然后调用那个“控制器”内的一个“动作”方法。然后“控制器”调用一个特定的“视图”来显示传回给用户的结果。好消息是Rails处理大部分事务。对于我们写的简单的Hello,World!应用程序,我们只需要给“控制器”和“视图”编码。我们不需要给“模型”编码,因为我们没有任何数据需要处理。让我们从“控制器”开始吧。
以同样方式我们使用rails命令来创建一个新的Rails应用程序,我们也可以使用“生成器”脚本来为我们的应用程序创建一个新的“控制器”。这个命令名为generate,它在script子目录中。所以要创建一个名为say的“控制器”,我们要确保在demo目录内运行这个脚本,并传递我们想要创建的“控制器”的名字。[“控制器的名字”概念比你想要复杂得多,我们会在13.4节中解释。现在,我们只是假设这个“控制器”被称为Say。]
demo> ruby script/generate controller Say

 

exists app/controllers/
exists app/helpers/
create app/views/say
exists test/functional/
create app/controllers/say_controller.rb
create test/functional/say_controller_test.rb
create app/helpers/say_helper.rb
当向你的应用程序添加新的Ruby脚本或指令时,脚本会日志它检查到的文件和目录。现在,我们感兴趣的是这些脚本中的一个和那个新指令。
我们查看“控制器”源文件。你会在app/controllers/say_controller.rb中找到文件。让我们看看这个文件的内容。
class SayController < ApplicationController
end
很小?SayController是个空类,它继承了ApplicationController,所有它自动地获得了缺省“控制器”的所行为。为了让我们“控制器”处理请求,需要给它添加一些代码。我们让代码做什么呢?现在,它不做任何事—我们简单地需要个空的“动作”方法。所以下个问题是,这个方法应该叫什么名字呢?要回答这个问题,我们需要看看Rails处理请求的方式.

 

 

RailsURL“请求”

 

像其它web应用程序一样,Rails应用程序显示相关的URL给它的用户。当你在浏览器输入URL时,你谈到应用程序,它生成响应给你。
但是,实际情况要比这复杂得多。让我们想像一下你的应用程序是否对http://pragprog.com/online/demo有效。web服务程序会集中你输入的部分。它知道它看到的路径online/demo,它必须指向应用程序。如果URL没有被改变—它将调用同一应用程序。任何额外的路径信息被传递给应用程序,它只用于它们自己的内部用途。

Rails使用路径来决定使用的“控制器”名字和那个“控制器”内的要调用的“动作”的名字。[Rails在解析URL时非常灵活。本章内,我们描述缺省机制。我们也在16.3节显示如何覆写它。]这显示在图4.2中。应用程序后面路径的第一部分是“控制器”的名字,第二部分是“动作”的名字。这显示在图4.3中。

 

 

 

我们的第一个“动作”

 

让我们添加名为hello的“动作”给我们的say “控制器”。从上节讨论中,我们知道添加一个hello “动作”意味着在类SayController内创建一个叫hello的方法。但是应该怎么做呢?现在,它没做任何事。记住“控制器”的工作是设置让“视图”知道显示什么东西。对于我们的第一个应用程序来说,没有东西要设置,所以空的“动作”将也工作的很好。用编辑器修改app/controllers目录下的say_controller.rb文件,添加如下面显示的hello()方法。
class SayController < ApplicationController
def hello

 

end

 

end
现在让我们试着调用它。找到浏览器窗口,导航到http://localhost:3000/say/hello。(注意在这个测试环境中,我们没有输入任何应用程序字符串—我们直接给“控制器”程序。)你将看到像下面样的画面。

 

 

 

这让人烦恼,但错误清晰地说明了原因(奇怪的路径部分)。我们创建了“控制器”类和“动作”方法,但我们没有告诉Rails显示什么。“视图”在哪儿。记住当我们运行脚本来创建新“控制器”时。命令会给我们的应用程序添加三个文件和一个新目录。那个目录包含了用于此“控制器”的“视图”模板。在我们的例子,我们创建名为say的“控制器”,所以“视图”将出现在目录app/view/say中。
想完成我们的Hello,World!应用程序,让我们创建个模板。缺省地,Rails查看与它的“动作”具有同样名字的名字。在我们例子中,这意味着我们需要创建一个名为app/views/say/hello.rhtml的文件。(.rhtml是什么?我们稍后解释。)现在,让我们看看HTML的内容。
<html>
<head>
<title>Hello, Rails!</title>
</head>
<body>
<h1>Hello from Rails!</h1>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值