2012-12-14 95 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