在红宝石中使用Sinatra

在本系列文章的前一篇文章中,我们谈到了Sinatra是什么。在本文中,我们将看看一些真正的功能性Sinatra代码,触摸一些Sinatra功能,所有这些功能将在本系列即将发表的文章中深入探讨。

在开始之前,您'必须继续安装Sinatra。安装Sinatra和其他宝石一样容易。Sinatra确实有一些依赖关系,但没有什么重要的,你不应该'在任何平台上安装它都没有任何问题。

$gem安装sinatra

你好,世界!

Sinatra"Hello world"应用程序非常简单。不包括require line,shebang和whitespace,它只包括三行。这不仅仅是应用程序的一小部分,就像Rails应用程序中的控制器一样,这就是全部。你可能注意到的另一件事是你没有运行任何像Rails生成器这样的东西来生成一个应用程序。只需将以下代码粘贴到新的Ruby文件中,即可重新完成。

#!/usr/bin/env ruby
require'rubygems'
require'sinatra'
get'/'do
&##39;你好,世界!'
结束

当然,这不是'这是一个非常有用的程序,它's just"Hello world,"但在Sinatra中更有用的应用程序是't更大。那么,你如何运行这个小的Web应用程序呢?某种复杂的脚本/服务器命令?Nope,只需运行该文件即可。它'只是一个红宝石程序,运行它!

inatra$/你好,rb
==Sinatra/0.9.4已从4567开始使用**备份进行开发

还不是很激动。它's启动服务器并绑定到端口4567,因此继续并将您的Web浏览器指向http://localhost:4567/。在那里'你的"Hello world"消息。以前,Ruby中的Web应用程序从未如此简单。

Using Parameters

所以让我们看看更有趣的东西。让's创建一个名称与您相符的应用程序。为此,我们需要使用一个参数。Sinatra中的参数和其他一切一样-简单而直接。

#!/usr/bin/env ruby
require'rubygems'
require'sinatra'
get'
"hello#{params[:name]}!"
结束

一旦您'进行了此更改,您需要重新启动Sinatra应用程序。用Ctrl-C杀死它并再次运行。(有一种方法可以解决这个问题,但我们将在未来的文章中看到这一点。)现在,参数很简单。我们've做了一个名为/hello/:name的操作。这种语法模仿URL的样子,所以转到67http://localhost:4567/hello/Your Name查看它的实际操作。

/hello数学小知识五年级部分与您所做的测试的URL部分匹配,:name将吸收您给出的任何其他文本并将其放入params密钥:name下的散列。参数就是那么容易。当然,你可以做更多的事情,包括基于regexp的参数,但这几乎就是你所有需要的。

添加HTML

最后,让's用一点HTML来刺激这个应用程序。Sinatra会将从URL处理器获得的任何信息返回到web浏览器。到目前为止,我们've刚刚返回一串文本,但我们可以在其中添加一些HTML而没有问题。我们'在这里使用ERB,就像在轨道中使用一样。还有其他(可以说是更好的)选项,但这可能是最熟悉的,因为它带有Ruby,并且在这里会做得很好。

首先,如果存在一个视图,Sinatra将渲染一个名为布局的视图。此布局视图应具有yield语句。此yield语句将捕获指定的输出ic视图正在渲染。这使您可以非常简单地创建布局。最后,我们有一个hello视图,它生成实际的hello消息。这是使用erb:hello方法调用呈现的视图。您'请注意,没有单独的视图文件。对于这样一个小的应用程序,比较好将所有代码保存在一个文件中。虽然视图在文件末尾是分开的。

#!/usr/bin/env Rub ruby
require \##39;rubygems #35; 39;
require \35; 35; 39;sinatra&\35#39;
get \\\##35;#39;39;
@name=params[:name]
erb:hello
110>end
u\\Ó
@
@@@Lot t
&t;t;html和t;t和t;t gt;


@@hello

hello<%=@name%>!

在那里你有它。我们在包括视图在内的大约15行代码中有一个完整的,功能性的hello world应用程序。在下面的文章中,我们将仔细研究路线,如何存储和检索数据,以及如何使用HAML更好地查看。