2012-12-14 99 views
7

我想将Bootstrap添加到Sinatra应用程序。我有设置路线来编译bootstrap.lessresponsive.less。分别在Web浏览器中加载这两个样式表可以正常工作。但是当我尝试在html页面中使用它们时,我的应用程序挂起。我只能通过kill -9停止申请。较少挂起Sinatra应用程序

似乎有点少进口和多个样式表会导致应用程序挂起。我能够隔离问题:

!!! 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

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

@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; 
} 

访问索引页挂起西纳特拉。如果我在html页面中注释掉style2.less或在style1.less中注释掉shadows.lessmixins.less,则页面按预期加载。

任何想法可能是什么问题或如何进一步调试?

+3

+1:好的问第一个问题。 –

+1

也许尝试在这里的第一个答案中看到'Less.paths << settings.views':http://stackoverflow.com/questions/9606703/parsing-less-options-in-a-sinatra-app。直接告诉Less配置对象对我来说很有意义。另外我相信'路径:[“views”]'是多余的,只有在您导入的较少文件位于'/ views'之外的地方时才会使用。 – danneu

+0

'paths => ['views']'不是冗余的。 Less编译器需要解析其导入。 @danneu提到的问题是关于倾斜宝石中的bug,它已经在git的最新版本中解决了。 – stijnvn

回答

1

我把你的文件和一些小的修改对他们说:

  • 我改名style2.cssstyle2.less这样我就可以使用它少,并最终下载style2.css用正确的CSS语法---它没有与其他分机一起工作。
  • 而且,我告诉了一点,搜索指令的路径是Sinatra的视图路径:Less.paths << settings.views

因此,通过这些更改,Sinatra应用程序停止挂起。

+1

'* .css'文件在我的问题中是一个错误。我只使用'* less'文件。我更新了我的问题。挂起并不总是会发生。看来我在少编译器或红宝石宝石中遇到了一些竞争条件。无论如何感谢您的建议。 – stijnvn