$ gem install sinatra

  1. 测试:
$ subl app.rb

  • app.rb内容:
require 'sinatra'get '/' do"Hello, World!"
end

  • 运行服务器:
$ ruby app.rb

在浏览器中输入:localhost:4567,没问题的话就会显示Hello, World!

  • 基于类的宏来定义route的写法:
require 'rubygems' #有没有都行,不影响
require 'sinatra/base'class App<Sinatra::Baseget '/' do"Hello, World!"end
end

  • 使用模板

见过用过的有两种:erb、haml

$ gem install haml #安装haml

#encoding:utf-8
require 'sinatra/base'
require 'haml'class App<Sinatra::Baseenable :inline_templatesget '/' do@title="Top"haml "My Way"endget '/name/:name' do@name=params[:name]@title="Song for #{@name}"haml "#{@name}'s Way"end
endApp.run!__END__@@layout
!!!5
%html%head%title=@title%body%h1=@title%div=yield

  • 导入被称之为“Rack::Rewrite”的、在应用系统内部重写URL的中间件。

当然,用mod_rewrite或Nginx也能做同样的事,但用“Rack::Rewrite”具有在应用系统内部记述rewrite规则的优点。

  • 能不依存服务器应用程序中来书写rewrite规则。
    这一点,尤其在无法控制服务器应用程序的云环境中,比如部署在heroku时等,非常便利。
  • 借助Rack::Test等,能够书写rewrite规则的自动测试。

安装很简单。

1
$ gem install rack-rewrite
。。。
require 'rack/rewrite'
。。。# 重写URL到/name/*use Rack::Rewrite dorewrite %r{^/song_for/(.*)},'/name/$1'end

  • 通过“use”来使用的中间件,称之为“Rack Middleware”。这些中间件,实际上是遵照Rack的应用框架,也可以同样的使用在Ramaze和Rails等上面。
  • 通过“register”来登录的被称为“Sinatra Extensions”模块,不能使用在Sinatra、或者是本次所说明的Sinatra扩张框架Padrino、Sinatra Base之外的地方。

使用“重载”解决“每次重启的麻烦”


$ gem install sinatra-contrib

然后,在“require ‘sinatra/base’”的正后方加入:

1
require 'sinatra/reloader'

最后,只需要通过register来声明使用重载(用Thin作服务器不能很好地运行,所以一并设定在WEBrick上)。

1
2
3
4
5
6
7
class App < Sinatra::Base
  enable :inline_templates
  enable :logging
  set :server, "webrick"
  register Sinatra::Reloader
  #...
end

想设定为只在development环境中有效也很简单。

1
2
3
4
configure :development do
  register Sinatra::Reloader
  set :server, "webrick"
end

这样,就能在运行着Sinatra进程的终端,进行设计变更、逻辑变更等各种修改(追加gem等的情况是需要重启的,这个请注意)。

【sinatra】安装测试相关推荐

  1. CMake实战之安装测试和添加环境生成安装包

    1.安装测试 CMake 也可以指定安装规则,以及添加测试.这两个功能分别可以通过在产生 Makefile 后使用 make install 和 make test 来执行.在 GNU Makefil ...

  2. ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版

    主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...

  3. iPhone手机获取uuid 安装测试app

    iPhone手机获取uuid 安装测试app UDID是一种iOS设备的特殊识别码.除序号之外,每台ios装置都另有一组独一无二的号码,我们就称之为识别码( Unique Device Identif ...

  4. Redis集群方案,Codis安装测试

    Redis集群方案,Codis安装测试 1,关于豌豆荚开源的Codis Codis是豌豆荚使用Go和C语言开发.以代理的方式实现的一个Redis分布式集群解决方案,且完全兼容Twemproxy.Twe ...

  5. node.js介绍及Win7环境安装测试(转)

    官网描述: Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable ...

  6. hive安装测试及Hive 元数据的三种存储方式

    一  hive安装测试 1.下载解压 tar -xf hive-x.y.z.tar.gz(本次安装为hive-0.8.1.tar.gz) 将解压后的hive-0.8.1文件放在系统的/home/had ...

  7. Microsoft Windows XP SP3安装测试手记

    作为一名Microsoft TechNet Observer,我近期收到了ITProCity方面关于Windows vista Service Pack 3和Windows XP Service Pa ...

  8. PyTorch安装测试训练建自己的数据集

    Pytorch安装测试训练建自己的数据集 前言 一.PyTorch是什么? 二.PyTorch环境搭建 1.设备要求 2.安装Pytorch 3.验证PyTorch 二.CIFAR10测试 1.关于C ...

  9. 怎么使用XCode给iOS手机安装测试包

    场景 在实际的APP开发中,需要针对Android机和IOS机子进行测试. 打包APP测试包可以看教程 用Hbuild打包APP 安装Android的安卓apk包,可以直接下载安装到手机就可以了. 但 ...

  10. 安装测试包(.ipa)到iPhone手机

    测试的朋友都会碰到安装测试包的情况,一般测试包(后缀名.ipa)用于内部人员测试. 目前,我所知道的有两种安装方法: 一种是使用iTunes: 1.打开iTunes,选中我的应用,将测试包.ipa拖到 ...

最新文章

  1. JS 总结之函数、作用域链
  2. laravel项目运行 php artisan cache:clear 命令报错
  3. SAP UI5 CreateBindingContext 方法的实现逻辑
  4. linux idea 权限,Linux下idea由于缺少相关权限导致的tomcat ERROR
  5. codelite linux 安装,CodeLite + MinGW环境安装
  6. 更改vmware esx机器的ip
  7. MVC个层次之间的联系
  8. 计算机编程入门先学什么最好?
  9. bugku中的misc题
  10. robotstudio机器人应用实践(码垛搬运工作站)
  11. 技术是把双刃剑,需要好好保管
  12. 结构光、双目、ToF——三种3D技术对比
  13. 私域运营中小程序的作用
  14. 知识体系:如何构建自己的知识体系
  15. 第七讲:4.智能物联网开关——角度倾斜报警实验例程
  16. 白帽子-高端信息安全培训(攻防技术、渗透测试、安全产品、安全标准、风险评估、等级保护、项目实战)...
  17. 基于Wemos D1避障WiFi小车及智能垃圾桶设计
  18. android在线播放儿歌源码,亲宝儿歌播放器手机版
  19. 微信软件服务器在那个国家,安道尔究竟是什么地方?为什么2000万中国人微信地址都选在安道尔...
  20. DNF单机版:注册失败的解决

热门文章

  1. [原创].触摸屏滤波的一点心得
  2. FIN7 正在转向密码重置和软件供应链攻击
  3. 谷歌公布4个0day详情,其中3个被滥用于攻击亚美尼亚
  4. 供应链勒索攻击登场,REvil 利用0day 迫使安全事件响应工具 VSA部署勒索软件
  5. Valak 6个月上演“变身戏法”,紧盯 Exchange 服务器窃取企业数据
  6. puppet 认证错误:Could not request certificate: unknown message digest algorithm
  7. 反射在微信公众平台开发的应用
  8. MATLAB建立图表的基础
  9. python json传参数可以传对象吗_廖雪峰的python系列教程(52)——IO编程之序列化...
  10. [Java] 蓝桥杯BASIC-21 基础练习 Sine之舞