我试图为模板和教学创建一个相当小的例子。
我创建了我的app.rb
文件
require 'sinatra'
get '/' do
"Minimal!__ !_!"
end
我的Gemfile就是这样
source 'https://rubygems.org'
gem 'rspec'
gem 'thin'
我开始了Sinatra
$ ruby app.rb
== Sinatra (v2.0.5) has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop
我可以访问该页面
但是当我更改代码时,页面被缓存,新内容不显示,除非我停止并启动服务器。
我已阅读Sinatra文档,但仍无法弄明白。
我试过添加
set :sessions, false
和
cache_control :off
无济于事
如果您遇到缓存问题,可以告诉浏览器不要缓存任何内容:
cache_control :no_cache
您还可以在标题中添加Pragma和Expires:
headers \
"Pragma" => "no-cache",
"Expires" => "0"
并把它全部放在before
过滤器中:
before do
cache_control :no_cache
headers \
"Pragma" => "no-cache",
"Expires" => "0"
end
或者,由于您正在进行演示,请打开浏览器的检查器并关闭缓存。 Chrome和Firefox都有此选项。
(OP添加此项)一个呼叫的极简主义版本可能就是这样
headers "Expires" => "0"
在有问题的范围内
你需要使用sinatra-reloader
根据示例代码,您的应用似乎是“经典”类型。因此,只需将reloader
库加载到您的应用程序中:
require 'sinatra'
require 'sinatra/reloader' if development?
get '/' do
"Minimal!__ !_!"
end
由于您使用的是Gemfile,请确保您还列出了sinatra-contrib
gem(并通过bundle install
安装):
source 'https://rubygems.org'
gem 'rspec'
gem 'thin'
gem 'sinatra', '~> 2.0`
gem 'sinatra-contrib', '~> 2.0'
否则直接安装gem:gem install sinatra-contrib
现在,只要您以'development'
模式启动服务器并对app.rb
或views/index.erb
进行更改,这些更改将在您的浏览器中反映出来并进行刷新。