Ошибка импорта 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

Другие вопросы по тегам