2012-11-04 23 views
2

我无法弄清楚如何做到这一点。我所有主要的.less文件都在/app/css/less,@导入文件在/app/css/less/bootstrap。我的主要样式表是/app/css/less/style.less,它应该被编译为'/public/css/style.css'。Sinatra-assetpack无法编译经典类型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' 

将会产生这个样式表在SER相关标签ved up html:

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

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

注意:在Gemfile中提到的git分支是固定较少支持(假设)的'pbaker'分支的副本。我已经试过标准的宝石和其他版本,都没有任何运气。

可能的原因是什么?

注:有关的问题,但不重复(因为它只涉及@import问题),可以找到here

回答

0

终于搞清楚问题是什么了,运行bundle package时我不得不使用--all选项。所以bundle package --all创建了我的sinatra-assetpack宝石的定制混帐叉的本地缓存,并且所有的作品“为标榜”现在:)

0

作为替代(和谷歌的后代),也一直工作在AssetPack宝石一堆最近(现在内置的支持较少)。

这个要点有一个完整的例子:https://gist.github.com/4652773

+0

它再次打破了我(使用最新的官方宝石,而不是我的叉)。我尝试了上面的要点中的设置,但没有运气,只是创建了一个空的'styles.32455.css'文件。 –

+0

好吧,让它再次运行,但只有在'['path/to/style.css']'block中包含一个文件,并且只有'css:'path/to/less''是省略。因此,要提供多个LESS文件(不带@imports),您必须为每个文件创建一个'css:css,[...]'。 –