2012-05-27 53 views
2

我试图加载CSS3和重置模块在我的SCSS文件,但我在尝试导入任何特定于Compass的模块时出现错误。指南针/ Sinatra加载模块

西纳特拉应用:

require 'rubygems' 
require 'sinatra' 
require 'sass' 
require 'compass' 

configure do 
    set :scss, {:style => :compact, :debug_info => false} 
    Compass.add_project_configuration(File.join(Sinatra::Application.root, 'config',  'compass.rb')) 
end 

get '/css/:name.css' do 
    content_type 'text/css', :charset => 'utf-8' 
    scss(:"stylesheets/#{params[:name]}") 
end 

style.scss:

@import "compass/reset"; 
@import "compass/css3"; 

错误消息:

Sass::SyntaxError at /css/style.css 
File to import not found or unreadable: compass/reset. Load path: /Users/work/repos/mysite 

有一块宝石,我可以安装到自动拉这些模块,或做我必须将Compass文件移动到我的Sinatra应用程序中?

回答

4

在compass.rb正确配置后,通常就足以像添加:

get '/stylesheets/:name.css' do 
    content_type 'text/css', :charset => 'utf-8' 
    sass params[:name].to_sym, Compass.sass_engine_options 
    end 

你的路线。 Sinatra IntegrationSample project,或者是你可以考虑有用:Better Compass integration for Sinatra (extracted from BigBand)

在模块化Modular App我使用类似:

module Assets 
    # #Sass/Compass Handler 
    class Stylesheets < Sinatra::Base 
    register CompassInitializer 
    get '/stylesheets/:name.css' do 
     content_type 'text/css', :charset => 'utf-8' 
     sass params[:name].to_sym, Compass.sass_engine_options 
    end 
    end 
end 

,我有我的lib文件夹中的文件compass_plugin.rb

module CompassInitializer 
    def self.registered(app) 
require 'sass/plugin/rack' 
Compass.configuration do |config| 
    config.project_path = Padrino.root 
    config.sass_dir = "app/stylesheets" 
    config.project_type = :stand_alone 
    config.http_path = "/" 
    config.css_dir = "public/stylesheets" 
    config.images_dir = "public/images" 
    config.javascripts_dir = "public/javascripts" 
    config.output_style = :compressed 
end 
Compass.configure_sass_plugin! 
Compass.handle_configuration_change! 
app.use Sass::Plugin::Rack 
    end 
end 

这无耻地从Padrino框架

0

我想你应该只是:

$ gem install compass 
$ compass create