2012-12-14 12 views
7

Ich versuche, Bootstrap zu einer Sinatra-Anwendung hinzuzufügen. Ich habe Routen eingerichtet, um bootstrap.less und responsive.less zu kompilieren. Das Laden der beiden Stylesheets in einem Webbrowser funktioniert wie erwartet. Aber wenn ich versuche, sie in einer HTML-Seite zu verwenden, hängt meine Anwendung. Ich kann die Anwendung nur mit kill -9 stoppen.Weniger hängt Sinatra Anwendung

Es scheint, dass irgendwie weniger Importe und mehrere Stylesheets einen Hang der Anwendung verursachen. Ich war in der Lage, das Problem zu isolieren:

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 

views/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 

views/style1.less

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

@color: #00eeff; 

h1 { 
    color: @color; 
} 

views/mixins.less

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

views/shadows.less

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

views/style2.less

@color: #ccff00; 

p { 
    color: @color; 
} 

die Index-Seite Zugriff hängt Sinatra. Wenn ich style2.less in der HTML-Seite oder inline shadows.less oder mixins.less in style1.less auskommentieren die Seite wie erwartet geladen.

Irgendeine Idee, was könnte das Problem sein oder wie kann ich das weiter debuggen?

+3

+1: Gut gestellte erste Frage. –

+1

Vielleicht versuchen Sie 'Less.paths << settings.views' in der ersten Antwort hier zu sehen: http://stackoverflow.com/questions/9606703/parsing-less-options-in-a-sinatra-app. Das Less config Objekt direkt zu sagen macht für mich Sinn. Ich glaube auch 'paths: [" views "]' ist überflüssig und wird nur benutzt, wenn deine importierten weniger Dateien irgendwo anders als '/ views' sitzen. – danneu

+0

'Pfade => ['Ansichten']' ist nicht redundant. Es benötigt den Less-Compiler, um seine Importe aufzulösen. Die Frage, auf die sich @danneu bezieht, bezieht sich auf einen Fehler im Tilt-Juwel, der bereits in der neuesten Version von Git gelöst wurde. – stijnvn

Antwort

1

habe ich Ihre Dateien und machte kleine Änderungen an sie:

  • I style2.css zu style2.less umbenannt, so kann ich weniger auf sie aus, und schließlich die style2.css mit der richtigen CSS-Syntax herunterladen --- Es funktionierte nicht mit der anderen Erweiterung.
  • Und ich sagte Less, dass der Pfad zur Suche nach Richtlinien, war der Blick Pfad von Sinatra: Less.paths << settings.views.

Mit diesen Änderungen hörte die Sinatra-Anwendung auf zu hängen.

+1

Die '* .css' Datei war ein Fehler in meiner Frage. Ich benutze nur '* less' Dateien. Ich habe meine Frage aktualisiert. Der Hang tritt nicht immer auf. Es scheint, dass ich in dem weniger Compiler oder Rubin-Juwel eine Race-Bedingung treffe. Danke für deine Anregung trotzdem. – stijnvn

Verwandte Themen