Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sass import error in Rails 3 app - "File to import not found or unreadable: compass"

Tags:

I have a Rails 3 app on which I successfully ran compass init rails ./ --using blueprint. I can @import files from the /stylesheets directory, but I get an error when I try to @import compass.

Right now the app has two simple sass files:

common.scss

$body-background: blue; 

main.scss

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

With the @import "compass" line commented out, this works -- I get a blue background, so I know Sass is working.

If I uncomment the line, and try to import compass or blueprint or anything else, I get an error like this.

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

I had through maybe I had to explicitly tell Sass where to find the Compass gem, so I added an add_import_path line to 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" 

I have been googling for two days, and can't determine why I'm having this problem with basic @import statements. How do I tell Sass where to find the Compass and Blueprint libraries?

like image 437
Eric Wright Avatar asked May 14 '11 23:05

Eric Wright


1 Answers

I was getting this error.

I changed this line in my application.rb from:

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

to:

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

Also, make sure the files are names something.css.sass NOT something.sass

And one other thing, I had an old compass.rb file in my config directory which isn't needed in Rails 3.2. Deleting that also solved this problem for me.

like image 121
Jonathon Horsman Avatar answered Oct 10 '22 03:10

Jonathon Horsman