J'ai une application Rails 3 sur laquelle j'ai réussi à exécuter compass init Rails ./ --using blueprint
. Je peux @import
les fichiers du répertoire/stylesheets, mais j'obtiens une erreur lorsque j'essaie de @import compass
.
À l'heure actuelle, l'application a deux fichiers Sass simples:
common.scss
$body-background: blue;
main.scss
@import "common";
//@import "compass";
body {
background: $body-background;
}
Avec la ligne @import "compass"
commentée, cela fonctionne - je reçois un fond bleu, donc je sais que Sass fonctionne.
Si je supprime la mise en commentaire de la ligne et tente d'importer compass
ou blueprint
ou quoi que ce soit d'autre, j'obtiens une erreur de ce type.
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: }
Je devais peut-être préciser explicitement à Sass où trouver la gemme Compass. J'ai donc ajouté une ligne 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"
Je suis sur Google depuis deux jours et je ne peux pas déterminer pourquoi je rencontre ce problème avec les instructions de base @import
. Comment dire à Sass où trouver les bibliothèques Compass et Blueprint?
D'accord, après l'aide de l'incroyable Chris Eppstein, j'ai pu trouver la ligne en cause. Dans config/environments.rb
j'avais cette ligne:
Sass::Plugin.options[:template_location] = {
"#{Rails_ROOT}/app/stylesheets" => "#{Rails_ROOT}/public/stylesheets"
}
Avec les versions actuelles de Rails (3.0.7) et Compass (0.11.1), cette ligne est pas nécessaire . Je l'ai ajouté après avoir suivi un tutoriel. Si sass ne trouve pas la boussole, c'est peut-être parce que cette ligne gâche votre Sass::Plugin.options[:template_location]
.
Je recevais cette erreur.
J'ai changé cette ligne dans mon application.rb de:
Bundler.require(:default, Rails.env) if defined?(Bundler)
à:
Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)
Assurez-vous également que les fichiers portent les noms quelque chose.css.sass NOT quelque chose.sass
Et une autre chose, j'avais un ancien fichier compass.rb dans mon répertoire de configuration qui n'est pas nécessaire dans Rails 3.2. Supprimer cela a également résolu ce problème pour moi.
J'ai résolu ce problème en basculant surcompass-Rails
gem au lieu decompass
gem dans mon Gemfile (n'oubliez pas de redémarrer votre serveur). Juste au cas où quelqu'un pourrait venir ici.
J'ai corrigé cette erreur après me cogner la tête
J'ai commenté cette ligne dans mon application.rb de:
Bundler.require(*Rails.groups(:assets => %w(development test))) if defined?(Bundler)
et non commenté:
Bundler.require(:default, :assets, Rails.env) if defined?(Bundler)
J'utilise Rails 3.2.11
J'ai résolu ce problème sur mon serveur Rails 3.2.0 en déplaçant gem 'compass-Rails', '~> 1.0.1'
du groupe :assets
dans la Gemfile
, d'un conseil dans https://github.com/Compass/compass-Rails/issues/19 .
La commande @import de Sass importe des fichiers .scss ou .sass, et non des fichiers .css.
Il semble que quelque chose ait été oublié lors de l'installation. (Peut-être la ligne compass install blueprint
??) J'ai suivi les étapes ici: http://compass-style.org/reference/blueprint/ et n'ai pas pu recréer le problème.
J'ai corrigé cette erreur comme ceci:
Dans application.rb j'avais
Bundler.require(:default, Rails.env) if defined?(Bundler)
et changé en
Bundler.require(:default, :assets, Rails.env) if defined?(Bundler)
C'était après la mise à jour d'un projet de 3.0.3 à 3.2.13