2

我正在使用 Windows 7 中的 Sprockets(仅限开发环境)通过机架服务器提供我的 Compass 驱动的 SASS 文件。当我将路径附加到 Sprockets 时,它似乎没有将这些添加到 SASS 加载路径。

据我了解sprockets-sass append_path中的文档应该自动添加到 SASS 的路径load_path

base/sass/base.scss在一个项目特定的组件目录(如下所列)中,并且在这个文件中我试图包含来自公共组件的所有 scss 文件。../common/sass/*如果我在@include其中使用相对路径(

Sass::SyntaxError: File to import not found or unreadable: common/sass/*
Load paths:
  Sass::Globbing::Importer
  C:/Program Files (x86)/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/compass-0.12.1/frameworks/blueprint/stylesheets
  C:/Program Files (x86)/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/compass-0.12.1/frameworks/compass/stylesheets
  C:/Program Files (x86)/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/compass-magick-0.1.4/lib/stylesheets
  Compass::SpriteImporter
  (in C:/repos/test/project/components/base/sass/base.scss)

如您所见,加载路径中仅列出了由 compass 和 compass-magick 添加的路径,我也希望它能够查看C:/repos/test/project/components

我的机架服务器设置如下所示:

#!/bin/env ruby
require 'bundler'
Bundler.require

COMPONENT_DIR = "../../components" # -> C:/repos/test/project/components
GENERATED_CSS_DIR = "public/generated-css"

Compass.configuration do |compass|
  compass.output_style = :compressed
end

compiler = Rack::Builder.new do
  map "/#{GENERATED_CSS_DIR}" do
    environment = Sprockets::Environment.new
    environment.append_path File.expand_path(COMPONENT_DIR)
    environment.cache = Sass::CacheStores::Memory.new
    run environment
  end
end.to_app

@server = Rack::Server.new({:app => compiler, :Port => 9292})

Thread.new do
  loop do
    if $stdin.gets.nil?
      @server.server.shutdown
      Process.exit
    end
  end
end

@server.start

该捆绑包安装了以下 gem:

  • 机架 (1.4.1)
  • 萨斯(3.1.15)
  • sass-globbing (1.0.0.rc.2)
  • 指南针 (0.12.1)
  • 指南针魔法 (0.1.4)
  • 链轮 (2.3.1)
  • 链轮助手 (0.4.0)
  • sprockets-sass (0.7.0)

对于如何解决此问题的任何见解或指示,我将非常感激。

4

1 回答 1

2

看起来你需要类似的东西;

compass.add_import_path File.expand_path(File.join(COMPONENT_DIR, "components"))

在你的Compass.configuration do |compass|街区内?

于 2012-05-03T14:32:55.720 回答