$ 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::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规则的自动测试。

安装很简单。

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之外的地方。

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


$ 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等的情况是需要重启的,这个请注意)。

最新文章

  1. MyBlog
  2. viewport ——视区概念,为 自适应网页设计
  3. bootstrap的下拉框在firefox界面不友好的处理
  4. SVG的路径动画效果
  5. python网络编程socket之多进程
  6. 新浪新闻API接口
  7. android120 zhihuibeijing 开机页面
  8. 【NOIP模拟】cut
  9. [Java 教程 01] Hello,Java!
  10. ELK平台的搭建
  11. log4j java项目中的配置
  12. C# .net mvc web api 返回 json 内容,过滤值为null的属性
  13. vs2015 不能启动 iis express
  14. 库函数wordcloud安装的问题
  15. 教程:在 Visual Studio 中开始使用 Flask Web 框架
  16. Centos6.5下升级Python版本
  17. 【转】【Python】Python发送邮件(常见四种邮件内容)
  18. Tomcat清空缓存方法
  19. [LeetCode&amp;Python] Problem 700. Search in a Binary Search Tree
  20. Spring Boot学习--项目启动时执行特定方法

热门文章

  1. 谈谈.NET中常见的内存泄露问题——GC、委托事件和弱引用
  2. UITextView 监听 return key的改变
  3. 通过CSS使文本框中输入的小写字母变大写字母
  4. SSH验证原理
  5. meta的学习记录
  6. Proxy settings in TortoiseSVN and command line svn client
  7. 由单例模式学到:volatile关键字
  8. jQuery选择器总结(转)
  9. eclipse报jvm terminated.exitcode=2异常解决办法
  10. 第八篇 Integration Services:高级工作流管理