Ошибка импорта Sass в приложении Rails 3 - "Файл для импорта не найден или не читается: компас"
У меня есть приложение Rails 3, в котором я успешно запустил compass init rails ./ --using blueprint
, Я могу @import
файлы из каталога /stylesheets, но я получаю сообщение об ошибке при попытке @import compass
,
Прямо сейчас в приложении есть два простых файла sass:
common.scss
$body-background: blue;
main.scss
@import "common";
//@import "compass";
body {
background: $body-background;
}
С @import "compass"
строка закомментирована, это работает - я получаю синий фон, так что я знаю, что Sass работает.
Если я раскомментирую строку и попробую импортировать compass
или же blueprint
или что-то еще, я получаю ошибку, как это.
Syntax error: File to import not found or unreadable: compass.
Load paths:
/Users/eric/path/to/myrailsapp/app/stylesheets
on line 2 of /Users/eric/path/to/myrailsapp/app/stylesheets/main.scss
1: @import "common";
2: @import "compass";
3:
4: body {
5: background: $body-background;
6: }
Возможно, мне пришлось явно сказать Sass, где найти драгоценный камень Compass, поэтому я добавил add_import_path
строка в config/compass.rb:
require 'compass'
require 'html5-boilerplate'
project_type = :rails
project_path = RAILS_ROOT if defined?(RAILS_ROOT)
add_import_path "/Library/Ruby/Gems/1.8/gems/" # unfortunately this has no effect
http_path = "/"
css_dir = "public/stylesheets"
sass_dir = "app/stylesheets"
images_dir = "public/images"
javascripts_dir = "public/javascripts"
cache_dir = "tmp/sass-cache"
http_images_path = "/images"
http_stylesheets_path = "/stylesheets"
http_javascripts_path = "/javascripts"
Я гуглил два дня и не могу определить, почему у меня эта проблема с базовыми @import
заявления. Как мне сказать Sass, где найти библиотеки Compass и Blueprint?
7 ответов
Хорошо, после помощи удивительного Криса Эппштейна я смог найти оскорбительную линию. В config/environments.rb
У меня была эта строка:
Sass::Plugin.options[:template_location] = {
"#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets"
}
В текущих версиях Rails (у меня 3.0.7) и Compass (0.11.1) эта строка не нужна. Я добавил его после обучения. Если sass не может найти компас, возможно, это связано с тем, что Sass::Plugin.options[:template_location]
,
Я получаю эту ошибку.
Я изменил эту строку в моем application.rb из:
Bundler.require(:default, Rails.env) if defined?(Bundler)
чтобы:
Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)
Кроме того, убедитесь, что файлы имеют имена что-то. Css.
И еще одна вещь, у меня был старый файл compass.rb в моей директории config, который не нужен в Rails 3.2. Удаление, которое также решило эту проблему для меня.
Я исправил эту проблему, переключившись на compass-rails
драгоценный камень вместо compass
драгоценный камень в моем Gemfile (не забудьте перезагрузить ваш сервер). На всякий случай, если кто-то может встретиться здесь.
Я исправил эту ошибку, ударившись головой
Я прокомментировал эту строку в моем application.rb из:
Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)
и без комментариев:
Bundler.require(:default, :assets, Rails.env) if defined?(Bundler)
Я использую Rails 3.2.11
Я исправил эту проблему на своем сервере Rails 3.2.0, переместившись gem 'compass-rails', '~> 1.0.1'
от :assets
группа в Gemfile
Из подсказки в https://github.com/Compass/compass-rails/issues/19.
Команда @import в Sass импортирует файлы.scss или.sass, а не файлы.css.
Похоже, что-то было пропущено при установке. (возможно линия compass install blueprint
?) Я выполнил следующие действия: http://compass-style.org/reference/blueprint/ и не смог воссоздать проблему.
Я исправил эту ошибку следующим образом:
В application.rb у меня было
Bundler.require(:default, Rails.env) if defined?(Bundler)
и изменился на
Bundler.require(:default, :assets, Rails.env) if defined?(Bundler)
Это было после обновления проекта с 3.0.3 до 3.2.13