【sinatra】安装测试
$ gem install sinatra
- 测试:
$ 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::Base
get '/' do
"Hello, World!"
end
end
- 使用模板
见过用过的有两种:erb、haml
$ gem install haml #安装haml
#encoding:utf-8
require 'sinatra/base'
require 'haml' class App<Sinatra::Base
enable :inline_templates
get '/' do
@title="Top"
haml "My Way"
end
get '/name/:name' do
@name=params[:name]
@title="Song for #{@name}"
haml "#{@name}'s Way"
end
end App.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规则的自动测试。
- 能不依存服务器应用程序中来书写rewrite规则。
安装很简单。
|
1
|
$ gem install rack-rewrite |
。。。
require 'rack/rewrite'
。。。
# 重写URL到/name/*
use Rack::Rewrite do
rewrite %r{^/song_for/(.*)},'/name/$1'
end
- 通过“use”来使用的中间件,称之为“Rack Middleware”。这些中间件,实际上是遵照Rack的应用框架,也可以同样的使用在Ramaze和Rails等上面。
- 通过“register”来登录的被称为“Sinatra Extensions”模块,不能使用在Sinatra、或者是本次所说明的Sinatra扩张框架Padrino、Sinatra Base之外的地方。
使用“重载”解决“每次重启的麻烦”
然后,在“require ‘sinatra/base’”的正后方加入:
最后,只需要通过register来声明使用重载(用Thin作服务器不能很好地运行,所以一并设定在WEBrick上)。
想设定为只在development环境中有效也很简单。
这样,就能在运行着Sinatra进程的终端,进行设计变更、逻辑变更等各种修改(追加gem等的情况是需要重启的,这个请注意)。 |
【sinatra】安装测试的更多相关文章
- mahout 安装测试
1 下载 在http://archive.apache.org/dist/mahout下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息
- Hbase的安装测试工作
Hbase的安装测试工作: 安装:http://www.cnblogs.com/neverwinter/archive/2013/03/28/2985798.html 测试:http://www.cn ...
- ubuntu下opencv2.4.9安装测试
ubuntu下opencv2.4.9安装测试 whowhoha@outlook.com 一.依赖包安装 1. build-essential 软件包 sudo apt-get install bui ...
- 如何在本地安装测试ECSHOP 转载
如何在本地安装测试ECSHOP 如何在本地(自己的电脑)上先安装ECShop 一.创建PHP环境 1.下载AppServ 因为ECShop在线网上商店系统是用PHP语言开发的,所以,在本地架设网店之前 ...
- 谷歌Cartographer学习(1)-快速安装测试(转载)
转载自谷歌Cartographer学习(1)-快速安装测试 代码放到个人github上,https://github.com/hitcm/ 如下,需要安装3个软件包,ceres solver.cart ...
- ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版
主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...
- Centos 7.3 编译 & 安装 & 测试 facebook faiss
许多 AI 系统训练完毕,正式上线时的基本操作往往可以抽象为:在高维向量空间中,给定一个向量,寻找与之最相近的 k 个向量.当向量数目异常巨大时,如何快速地执行这一基本操作,便成为 AI 系统在工程应 ...
- Python 3.6.3 官网 下载 安装 测试 入门教程 (windows)
1. 官网下载 Python 3.6.3 访问 Python 官网 https://www.python.org/ 点击 Downloads => Python 3.6.3 下载 Python ...
- redis3.2.10单实例安装测试
redis3.2.10单实例安装测试 主要是实际使用环境中使用,为了方便快速部署,特意记录如下: # root用户 yum -y install make gcc-c++ cmake bison-de ...
- openstack系列文章(1)devstack安装测试Queens
1.在OpenStack 圈子中,有这么一句名言:”不要让朋友在生产环境中运行DevStack.但是初学者在没有掌握OpenStack CLI的情况下用devstack安装测试环境还是不错的.本系列文 ...
随机推荐
- ArcGIS Engine开发之旅04---ARCGIS接口详细说明
原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1. IField接口(esriGeoDatabase)... 2 2. ...
- TermServDevices报错导致服务器死机(远程服务使用者必读)
事件类型: 错误 事件来源: TermServDevices 事件 ID: 1111 描述:打印机 !!192.168.99.6!HP LaserJet 3050 Series PCL 5e 所需的驱 ...
- LeetCode Number of Digit One
原题链接在这里:https://leetcode.com/problems/number-of-digit-one/ 每10个数, 有一个个位是1, 每100个数, 有10个十位是1, 每1000个数 ...
- apt-get -y install中的-y是什么意思?
是同意的意思.没有 -y的命令也可以执行,系统会提示你是否安装,输入y,回车,就会安装了 apt-get -y install这个指令则是跳过系统提示,直接安装.
- 敏捷BI——岂止于快
信息爆炸的时代,唯有分析快,才可以把握住可能分分钟流失的数据信息,唯有钻取深,才可以挖掘出海量信息中蕴藏的财富.是时候为您的企业上一套敏捷BI了. [敏捷BI的产生背景] 传统BI由IT人员做报表,业 ...
- android点滴之ViewTreeObserver
一类的基本概念 这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知.这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等.最常见的用途时通过监听获知什 ...
- Android --slidedatetimepicker时间控件应用
下载参考SlideDateTimePicker时间选择器 1.创建 beginTimeTxt=(EditText)findViewById(R.id.search_begintime_edittext ...
- javascript_获取iframe框架中元素节点的属性值
1. DOM:文档对象模型 [window 对象] 它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口. [document 对象] 该对象是window和frames对象的一个属性,是显示于窗口 ...
- javascript设计模式学习之三—闭包和高阶函数
一.闭包 闭包某种程度上就是函数的内部函数,可以引用外部函数的局部变量.当外部函数退出后,如果内部函数依旧能被访问到,那么内部函数所引用的外部函数的局部变量就也没有消失,该局部变量的生存周期就被延续. ...
- Java基础之集合框架——在文件中存储地图(TryPhoneBook2)
控制台程序. import java.io.*; public class Person implements Comparable<Person>, Serializable { // ...