我刚刚为我的Sinatra应用程序实现了Compass配置,但当我将环境更改为:test
或:production
并修改我的文件时,如screen.sass
或index.haml
我的更改不是当我重新加载页面时反映出来,所以我需要再次运行我的应用程序?
这是正常的吗?只是我吗?
这是我的app.rb
文件的样子:
require 'sinatra'
require 'haml'
require 'sass'
require 'compass'
require './helpers.rb'
configure do
set :environment, :test
Compass.configuration do |config|
settings.environment == :production ?
config.output_style = :compressed :
config.output_style = :nested
settings.environment == :development ?
config.line_comments = true :
config.line_comments = false
end
set :sass, Compass.sass_engine_options
end
before do
@js = 'javascript:;'
end
get '/scripts/jquery.js' do
# Downloads the latest jQuery 1.x version when needed. Requires to reload the page after done.
`curl "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" >> public/scripts/jquery.js`
end
get '/styles/:name.css' do
sass :"styles/#{params[:name]}"
end
get '/?' do
haml :index
end
get '/:page/?' do
haml params[:page].to_sym
end
有什么想法吗?
答案 0 :(得分:2)
通常,如果对正在运行的Sinatra应用程序进行更改,则必须重新启动应用程序,因为该程序已加载到内存中。
可以选择在Sinatra FAQ上自动检测更改并重新启动应用程序。
答案 1 :(得分:0)
由于Shotgun部分修复了这个问题(为你的生产重新加载文件,也许尝试使用Sinatra :: Reloader,恕我直言,比Shotgun更好。
也许像(未经测试)
require "sinatra"
configure(:production) do |c|
require "sinatra/reloader"
c.also_reload "*.sass", "*.haml"
end
话虽如此,您确定在生产/测试环境中确实需要这种行为来进行更新吗?发展环境应该(至少,我用它)用于这种热测试。
答案 2 :(得分:0)
我曾经使用过sinatra :: reloader 但是我不喜欢所引起的巨大依赖(因为我们都应该注意有多少宝石被激活)
手枪(在0.0.2的年龄),我认为所需的工作很好
答案 3 :(得分:0)
我为此使用了shotgum gem。
gem install shotgun
然后
shotgun app.rb
来自app dir
然后根据请求重新加载应用程序,而不是将整个内容保存在内存中。您访问localhost:9393
上的站点