少挂Sinatra应用程序

时间:2012-12-14 17:34:48

标签: ruby sinatra less

我正在尝试将Bootstrap添加到Sinatra应用程序中。我有设置路线来编译bootstrap.lessresponsive.less。在Web浏览器中单独加载两个样式表按预期方式工作。但是当我尝试在html页面中使用它们时,我的应用程序就会挂起。我只能使用kill -9停止申请。

似乎以某种方式减少导入和多个样式表会导致应用程序挂起。我能够找出问题所在:

app.rb

require 'rubygems'
require 'bundler/setup'

require 'sinatra'
require 'less'

get '/' do
  haml :index
end

get '/style1.css' do
  less :style1, :paths => ['views'] 
end

get '/style2.css' do
  less :style2, :paths => ['views'] 
end

视图/ index.haml

!!! 5
%html
  %head
    %title Hello World
    %link{'rel' => 'stylesheet', 'href' => 'style1.css', 'type' => 'text/css'}
    %link{'rel' => 'stylesheet', 'href' => 'style2.css', 'type' => 'text/css'}
  %body
    %h1 Hello World
    %p Hello World

视图/ style1.less

@import "mixins.less";
@import "shadows.less";

@color: #00eeff;

h1 {
  color: @color;
}

视图/ mixins.less

.box-shadow(@shadow) {
  -webkit-box-shadow: @shadow;
  -moz-box-shadow: @shadow;
  box-shadow: @shadow;
}

视图/ shadows.less

h1 {
  .box-shadow(6px 6px 3px #888);
}

视图/ style2.less

@color: #ccff00;

p {
  color: @color;
}

访问索引页面会挂起Sinatra。如果我在html页面中注释style2.less或在shadows.less中内联mixins.lessstyle1.less,则会按预期加载页面。

知道可能是什么问题或我如何进一步调试这个问题?

1 个答案:

答案 0 :(得分:1)

我拿走了你的文件并对它们做了一些小改动:

  • 我将style2.css重命名为style2.less,因此我可以使用Less,最后使用正确的css语法下载style2.css ---它不能与其他扩展一起使用。
  • 而且,我告诉Less,搜索指令的路径是Sinatra的观点路径:Less.paths << settings.views

因此,随着这些变化,Sinatra应用程序停止了。