scss library framework ruby-on-rails ruby-on-rails-3 sass compass-sass blueprint-css

ruby on rails - library - Error de importación de Sass en la aplicación Rails 3-"Archivo para importar no encontrado o ilegible: brújula"



sass scss (7)

Tengo una aplicación Rails 3 en la que ejecuté compass init rails ./ --using blueprint . Puedo @import archivos desde el directorio / stylesheets, pero aparece un error cuando trato de @import compass .

En este momento, la aplicación tiene dos simples archivos sass:

common.scss

$body-background: blue;

main.scss

@import "common"; //@import "compass"; body { background: $body-background; }

Con la línea de @import "compass" comentada, funciona: obtengo un fondo azul, así que sé que Sass está trabajando.

Si elimino el comentario de la línea y trato de importar compass o blueprint o cualquier otra cosa, aparece un error como este.

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: }

Tenía que pasar tal vez, tenía que decirle explícitamente a Sass dónde encontrar la gema Compass, así que agregué una línea add_import_path a 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"

He estado buscando en Google durante dos días y no puedo determinar por qué tengo este problema con las declaraciones @import básicas. ¿Cómo le digo a Sass dónde encontrar las bibliotecas Compass y Blueprint?


Arreglé este problema cambiando a la gema compass-rails lugar de la gema compass en mi Gemfile (no olvides reiniciar tu servidor). Solo en caso de que alguien se encuentre aquí.


De acuerdo, después de la ayuda del increíble Chris Eppstein, pude encontrar la línea ofensiva. En config/environments.rb tenía esta línea:

Sass::Plugin.options[:template_location] = { "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets" }

Con las versiones actuales de Rails (tengo 3.0.7) y Compass (0.11.1) esta línea no es necesaria . Lo agregué después de seguir un tutorial. Si sass no puede encontrar la brújula, podría ser porque esta línea está estropeando su Sass::Plugin.options[:template_location] .


El comando @import en Sass importa archivos .scss o .sass, no archivos .css.

Parece que se perdió algo en la instalación. (¿Tal vez el compass install blueprint línea?) Seguí los pasos aquí: http://compass-style.org/reference/blueprint/ y no pude volver a crear el problema.


Estaba recibiendo este error.

Cambié esta línea en mi application.rb desde:

Bundler.require(:default, Rails.env) if defined?(Bundler)

a:

Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)

Además, asegúrese de que los archivos sean nombres something.css.sass NOT something.sass

Y otra cosa, tenía un viejo archivo compass.rb en mi directorio de configuración que no es necesario en Rails 3.2. Eliminar eso también resolvió este problema para mí.


Solucioné este error así:

En application.rb tuve

Bundler.require(:default, Rails.env) if defined?(Bundler)

y cambiado a

Bundler.require(:default, :assets, Rails.env) if defined?(Bundler)

Esto fue después de actualizar un proyecto de 3.0.3 a 3.2.13


Solucioné este error después de golpear mi cabeza sobre él

Comenté esta línea en mi application.rb desde:

Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)

y sin comentar:

Bundler.require(:default, :assets, Rails.env) if defined?(Bundler)

Estoy usando Rails 3.2.11