2

Windows 7のSprocketsを使用してRackサーバーを介してCompassを利用したSASSファイルを提供しています(開発環境のみ)。Sprocketsにパスを追加すると、SASSロードパスにパスが追加されないようです。

sprocketsのドキュメントから理解しているように、sass append_pathはSASSへのパスをload_path自動的に追加する必要があります。

プロジェクト固有のコンポーネントディレクトリ(以下にリスト)にあり、このファイルに共通コンポーネントbase/sass/base.scssのすべてのscssファイルを含めようとしています。相対パス()を使用すると機能しますが、SASSにload_pathで相対パスを検索させると、次のエラーが発生します。../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)
  • sass(3.1.15)
  • sass-globbing(1.0.0.rc.2)
  • コンパス(0.12.1)
  • コンパス-魔術(0.1.4)
  • スプロケット(2.3.1)
  • スプロケット-ヘルパー(0.4.0)
  • スプロケット-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 に答える