Sass::Engine.render не импортирует библиотеки чертежей... почему?

Я пытаюсь сделать sass в CSS программно, используя Sass::Engine.new, Я сталкиваюсь с проблемой, где я не могу понять, как заставить это позволить @import GEMMIFIED_SASS_MODULE, Например, вот что я пытаюсь:

?> sass = "@import \"blueprint/reset\"\nh1\n  width: 100%"
=> "@import \"blueprint/reset\"\nh1\n  width: 100%"
>> puts sass # For readable version
@import "blueprint/reset"
h1
  width: 100%
=> nil
>> Sass::Engine.new(sass, :syntax => :sass).render
Sass::SyntaxError: File to import not found or unreadable: blueprint/reset.
Load path: /Users/username/projects/my_app
        from (sass):1
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/import_node.rb:64:in `rescue in import'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/import_node.rb:42:in `import'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/import_node.rb:25:in `imported_file'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:149:in `rescue in visit_import'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:154:in `visit_import'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/base.rb:37:in `visit'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:18:in `visit'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/base.rb:53:in `map'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/base.rb:53:in `visit_children'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:27:in `block in visit_children'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:39:in `with_environment'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:26:in `visit_children'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/base.rb:37:in `block in visit'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:47:in `visit_root'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/base.rb:37:in `visit'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:18:in `visit'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/visitors/perform.rb:7:in `visit'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/tree/root_node.rb:20:in `render'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/engine.rb:299:in `_render'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/sass-3.1.15/lib/sass/engine.rb:246:in `render'
        from (irb):30
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
        from /Users/username/.rvm/gems/ruby-1.9.2-p290@my_app/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

У меня нет проблем с этим, когда я помещаю sass в файл и использую @import blueprint/reset наверху, он может компилироваться в CSS просто отлично на лету в режиме разработки и с помощью rake assets:precompile, Но у меня есть новый вариант использования, где мне нужно сделать некоторые из себя, и я сталкиваюсь с этой проблемой. Я пытался добавить require 'compass', require 'compass-rails', а также require 'compass/rails' прежде чем я попытаюсь сделать это, но это не работает. Требуется работа (в том, что это говорит true или же false после запроса файлов), но он все еще не доступен в моем Sass::Engine.new().render вызов.

В моем Gemfile у меня есть:

gem 'haml-rails'
gem 'sass-rails'
gem 'compass-rails'

У кого-нибудь есть идеи о том, что я могу сделать, чтобы сделать библиотеки видимыми при использовании Sass::Engine? Я не мог найти что-либо в Справочнике или Документации

1 ответ

Вы не указываете путь к Blueprint, и SASS не может его найти.

Компас - это инструмент, созданный для решения этой проблемы. Он предоставляет экосистему расширений, которые можно импортировать напрямую, без указания путей.

Вы пытаетесь сделать это с простым SASS. Чтобы решить эту проблему, вы должны сообщить SASS о том, где хранятся расширения Compass:

# Allowing vanilla SASS use Compass extensions
Compass.sass_engine_options[:load_paths].each do |path|
  Sass.load_paths << path
end
Другие вопросы по тегам