我正在尝试将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

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

访问索引页面将挂起Sinatra。如果我注释掉html页面中的style2.lessshadows.less中的内联mixins.lessstyle1.less,则该页面将按预期加载。

知道是什么问题或如何进一步调试吗?

最佳答案

我拿走了您的文件并对它们进行了一些小的更改:

  • 我将style2.css重命名为style2.less,以便可以在其上使用Less,并最终以正确的CSS语法下载style2.css ---它无法与其他扩展名一起使用。
  • 而且,我告诉Less了,搜索指令的路径是Sinatra的views路径:Less.paths << settings.views

  • 因此,有了这些更改,Sinatra应用程序停止挂起。

    关于ruby - 少挂Sinatra应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13883605/

    10-14 09:53