Sinatra-assetpack没有编译Classic类型Sinatra应用程序中的Less文件

时间:2012-11-04 03:55:41

标签: ruby sinatra less sinatra-assetpack

我无法弄清楚如何做到这一点。我的所有主要.less文件都在/app/css/less中,/app/css/less/bootstrap中包含@ import'ed文件。我的主要样式表是/app/css/less/style.less,应编译为'/public/css/style.css'。

使用经典的Sinatra应用程序结构(非基础),我在各种文件中有以下内容(不相关的代码遗漏): ****的Gemfile

# encoding: utf-8
source :rubygems

gem 'sinatra'
gem 'thin'
gem 'less'
gem 'therubyracer'
gem 'haml', '~> 3.2.0.rc.1'
gem 'sinatra-partial'
gem 'sinatra-assetpack', :git => 'git://github.com/rupe/sinatra-assetpack.git', :require => 'sinatra/assetpack'

**** myapp.rb

# encoding: utf-8

require 'rubygems'
require 'bundler/setup'

require 'sinatra'
require 'haml'
require 'sinatra/partial'
require 'sinatra/assetpack'
require 'less'

assets do
  Less.paths .lt.lt "#{settings.root}/app/css/less"
  Less.paths .lt.lt "#{settings.root}/app/css/less/bootstrap"
  serve '/css', from: '/app/css/less'
  css :style, [
    '/css/style.css'
  ]
  prebuild true
end

**** layout.haml

!= css :style, :media => 'screen'

在提供的html中生成与样式表相关的标记:

link rel="stylesheet" href="/css/style.496718.css" media="screen"

但实际上并没有编译文件style.49718.css。实际上,它根本不编译任何文件。

注意:Gemfile中引用的git分支是修复Less支持(假设)的'pbaker'分支的副本。我已经尝试了标准的宝石和其他版本,都没有运气。

可能的原因是什么?

注意:可以找到相关问题,但不重复(仅指@import个问题),here

2 个答案:

答案 0 :(得分:0)

最后弄明白问题是什么,我在运行--all时必须使用bundle package选项。所以bundle package --all创建了sinatra-assetpack gem的自定义git fork的本地缓存,并且所有工作都“正如所宣传的那样”:)

答案 1 :(得分:0)

作为一种替代方案(对于谷歌的后代),最近有很多关于AssetPack gem的工作(现在内置的支持较少)。

这个要点有一个较少支持的完整示例:https://gist.github.com/4652773