如何在您的系统或VPS上安装和开始使用Sinatra
介绍
Sinatra 是一个用 Ruby 编写的简单轻量级的 Web 框架。 本文假设您了解基本的 Ruby,并在您的系统或云服务器上安装了 Ruby 和 RubyGems。 最好使用 Ruby 版本管理器 (RVM)。
这不是 Rails。 它是什么?
Sinatra 与 Ruby on Rails 的相似之处在于它们都是 Web 框架。 它与 Rails 的不同之处在于它更轻(开销更少),并且您可以对 web 应用程序进行更细粒度的控制。 此外,没有内置的数据库功能或页面呈现——所有这些都是手动完成的。
那为什么是辛纳屈?
它很快。 这很简单。 这是有效的。 然而,随之而来的是更多的工作和更多的错误空间。
Sinatra 最适合用于较小的 Web 应用程序,或者那些不需要 ' 膨胀的应用程序,例如他们网站 上的 列表中的那些。 单一用途的应用程序比比皆是,例如只有 将文本倒置的应用程序 。 你甚至可以用 Sinatra 编写一个简单的 Jekyll 前端。
安装 Ruby 和 RubyGems
安装 Ruby 和 RubyGems 的最佳方式是使用 Ruby 版本管理器或 RVM。 RVM 允许您安装多个 Ruby,使用它们自己的一组 gem(gemset),甚至每个 Ruby 有不同的 gemset。 要获取最新的 RVM 和 Ruby 2.0.0,请运行:
\curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0
您可以为 Ruby 版本输入任何版本号。 这将为运行该命令的一个用户安装 RVM。 要在系统范围内安装,请在 bash 之前添加 sudo:
\curl -L https://get.rvm.io | sudo bash -s stable --ruby=2.0.0
如果二进制 Ruby 可用于您的系统或云服务器(很可能),它将被下载并安装。 如果没有,它将从源代码构建 Ruby。 这可能需要一些时间。
在安装结束时,注销并重新登录。 然后它会要求你运行命令
source ~/.rvm/scripts/rvm
— this loads RVM into your current terminal. If all goes well, you will not have to do that again for any other terminal you open. However, if you are continually prompted to run that command, add it to your startup file, like
.bashrc
或者
.zshrc
安装宝石
就像安装任何其他 gem 一样,Sinatra 的安装方式如下:
gem install sinatra
就这些。 您已经安装了 Sinatra。
开始:你好世界
您的第一个 Web 应用程序应该简单易懂。 应用程序包装在 Ruby 类中。 这是一个包含 2 个文件的简单 Web 应用程序:
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/' do "Hello, world!" end end
# config.ru require './app' run HelloWorldApp
将内容写入两个文件 app.rb 和 config.ru (使用 Emacs 或您喜欢的文本编辑器)后,您可以通过从同一文件夹运行应用程序(例如, /home/user/code/my_sinatra_app):
rackup
这将启动 WEBrick,它为您的应用程序提供服务。 您会注意到 WEBRick 告诉您它所服务的 IP 和端口; 记笔记。 您可以通过 http://IP:port 访问您的应用程序。
了解 Hello World 应用程序
在 Sinatra 中,每个 get(或 post、put 等)块定义了每个路由,以及应用程序如何响应特定的 HTTP 请求。 在我们的例子中,我们定义了当用户请求应用程序的根目录或 / 时会发生什么。
让我们尝试一些更复杂的东西。
让我们配置我们的 HelloWorldApp 以获取参数!
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/' do "Hello, world!" end get '/:name' do "Hello, #{params[:name]}!" end end
URL 参数指定如下::param,并存储在 Ruby 代码中的 params 哈希中。
此代码指定了 2 条路线:一条用于裸 /,另一条用于 /:name。 不过,我们可以将此路由简化为一个检查 name 参数是否存在的路由!
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/?:name?' do "Hello, #{params[:name] ? params[:name] : 'world'}!" end end
这更复杂。 我们可以通过用问号将它们括起来来表示“可选”参数。 然后我们使用三元运算符来检查是否存在 params[:name]。好吧,如果你想让用户指定问候语怎么办? 让我们来看看... 你会如何构建它?
# app.rb require 'sinatra' class HelloWorldApp < Sinatra::Base get '/:greeting/?:name?' do "#{params[:greeting]}, #{params[:name] ? params[:name] : 'world'}!" end end
现在您只需导航到 http://yoursever:port/Aloha/Timothy,Timothy 先生就会感到非常特别!
更多的信息
我们推荐 Sinatra' 自己的 入门 指南,非常棒。 这将有很大帮助。