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

34,679

Solution 1

Okay, after help from the amazing Chris Eppstein I was able to find the offending line. In config/environments.rb I had this line:

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

With the currently versions of Rails (I have 3.0.7) and Compass (0.11.1) this line is not necessary. I added it after following a tutorial. If sass can't find compass, it might be because this line is messing up your Sass::Plugin.options[:template_location].

Solution 2

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.

Solution 3

I fixed this problem by switching to the compass-rails gem instead of the compass gem in my Gemfile (don't forget to reboot your server). Just in case someone might come across here.

Solution 4

I fixed this error after banging my head over it

I commented this line in my application.rb from:

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

and uncommented:

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

I am using Rails 3.2.11

Solution 5

I fixed this problem on my Rails 3.2.0 server by moving out gem 'compass-rails', '~> 1.0.1' from the :assets group in the Gemfile, from a tip in https://github.com/Compass/compass-rails/issues/19.

Share:
34,679
Eric Wright
Author by

Eric Wright

Updated on June 16, 2020

Comments

  • Eric Wright
    Eric Wright almost 4 years

    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?