【sinatra】安装测试

$ 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等的情况是需要重启的,这个请注意)。
原文地址:https://www.cnblogs.com/lizunicon/p/3536365.html