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)
私はこれをどのように解決できるかについての洞察や指針を得ることができれば非常に素晴らしいと思います。