2012-05-27 52 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