0

.scss コードをコンパイルするための ruby​​ コードがあります。DB からファイルをロードするカスタム インポーターを構築しようとしています。

ここに私のルビーコードがあります:

require 'rubygems'
require 'sass'
require 'sass/plugin'
require './eptimporter'  # my custom importer( code below )

Sass::Plugin.options[:load_paths] ||= []
Sass::Plugin.options[:load_paths] << Sass::Importers::Eptimporter.new("dummy")

puts Sass::Plugin.options[:load_paths]
puts Sass.compile_file("sass/sass.scss")  # scss file (code below)

これが私の輸入業者です:

module Sass
  module Importers
    class Eptimporter < Base

      attr_accessor :root

      def initialize(root)
        @root = root
      end

      # @see Base#find_relative
      def find_relative(name, base, options)
        nil
      end

      # @see Base#find
      def find(name, options)
        options[:syntax] = ":scss"
        options[:filename] = name
        options[:importer] = self
        Sass::Engine.new("p { color :blue; }", options)
      end

      # @see Base#mtime
      def mtime(name, options)
        Time.now
      end

      # @see Base#key
      def key(name, options)
        [self.class.name , name]
      end

      # @see Base#to_s
      def to_s
        @root
      end
    end
  end
end

そして最後に私のscssファイル:

@import "dummy.scss";
p { 
  color: red; 
  span { text-transform: uppercase; }
}

p { color :blue; }カスタム インポーターは、インポート文字列が何であれ、静的 CSS コードを返すだけです。エラーが発生しFile to import not found or unreadable: dummy.scss. (Sass::SyntaxError)ます。このエラーの原因は何ですか?

4

2 に答える 2

0

あなたの輸入者は登録されていますか?次のように登録してみてください: Sass.load_paths << Sass::Importers::Eptimporter.new('dummy')

options[:syntax] にも問題があるかもしれません。「:scss」ではなく、:scss にする必要があります。

于 2012-12-19T17:47:55.067 に答える
0

ハッシュを使用して、オプションを compile_file に渡します。

load_paths = Sass::Plugin.options[:load_paths] || []
load_paths << Sass::Importers::Eptimporter.new("dummy")

Sass.compile_file("sass/sass.scss", {:load_paths => load_paths})

また

Sass.compile_file("sass/sass.scss", {:importer => Sass::Importers::Eptimporter.new("dummy")})
于 2013-01-12T21:12:49.987 に答える