23

我有一個Rails 3應用程序,我成功運行了compass init rails ./ --using blueprint。我可以從/ stylesheets目錄中獲得@import文件,但當我嘗試@import compass時遇到錯誤。Rails 3應用程序中的Sass導入錯誤 - 「導入未找到或無法讀取的文件:指南針」

眼下的應用程序有兩個簡單的青菜文件:

common.scss

​​

main.scss

@import "common"; 
//@import "compass"; 

body { 
    background: $body-background; 
} 

隨着@import "compass"行註釋掉,這作品 - 我得到一個藍色背景,所以我知道Sass正在工作。

如果我取消註釋行,並嘗試導入compassblueprint或其他任何東西,我會得到類似的錯誤。

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

我通過了,也許我不得不明確地告訴薩斯在哪裏可以找到指南針的寶石,所以我加了一個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庫?

回答

4

好的,在驚人的克里斯艾普斯坦的幫助下,我找到了違規線路。在config/environments.rb我有這樣一行:

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

與當前版本的Rails(我有3.0.7)和羅盤(0.11.1)這條線是沒有必要。我按照教程添加了它。如果sass找不到指南針,可能是因爲這條線搞亂了你的Sass::Plugin.options[:template_location]

+0

嘗試過,但沒有爲我工作: – Rubytastic 2012-04-03 09:36:50

2

Sass中的@import命令導入.scss或.sass文件,而不是.css文件。

它看起來像是在安裝中錯過了一些東西。 (也許行compass install blueprint?)我按照這裏的步驟: http://compass-style.org/reference/blueprint/並無法重新創建該問題。

+0

權後,我想包括常規指南針和藍圖(scss)文件。上面的「compass init」行安裝藍圖。只是爲了確認我再次運行該命令 - 您可以在下面的輸出中看到羅盤認爲一切都已安裝。 – 2011-05-15 21:41:14

+0

$指南針安裝藍圖 相同的應用程序/樣式表/ screen.scss 相同的應用程序/樣式表/諧音/ _base.scss 相同的應用程序/樣式表/ print.scss 相同的應用程序/樣式表/ ie.scss 相同的公共/圖片/格.png – 2011-05-15 21:41:52

+0

這一個讓我。 – killebytes 2013-01-23 02:52:20

21

我得到這個錯誤。

我在application.rb中改變了這一行從:

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

到:

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

此外,請確保文件名something.css.sass東西。 sass

還有一件事,我的配置目錄中有一箇舊的compass.rb文件,它是在Rails 3.2中不需要。刪除也解決了這個問題給我。

+1

爲我工作,謝謝 – rnaud 2012-02-24 13:44:43

+1

嘗試沒有爲我工作 – Rubytastic 2012-04-03 09:43:44

+0

我今天創建了一個新的Rails 3.2.8項目和'compass.rb'是問題,我沒有' t改變'application.rb'中的任何內容,所以首先刪除'compass.rb'。 – Ash 2012-09-21 15:05:58

9

我通過切換到compass-rails寶石,而不是compass寶石在我的Gemfile(別忘了重新啓動服務器)解決了這個問題。以防有人在這裏遇到。

3

我在我的Rails 3.2.0服務器上解決了這個問題,通過從:assets組中的組中移出gem 'compass-rails', '~> 1.0.1'組,從的小費中移出。

+0

這對我有用了,謝謝! – Rimian 2013-01-02 23:42:11

+0

這對我在Rails 3.2.13和compass-rails 1.0.3中不適用。 – mcmlxxxiii 2013-06-09 16:20:17

5

我在它撞我的頭後固定此錯誤

我評論這條線在我的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

+0

If你已經添加了一個新的環境,加入'%w(開發測試)',比如'%w(開發測試新版本名稱)'應該足以讓資源加載。 – spyle 2014-02-12 14:01:05

0

我修正了這樣的錯誤:

在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

相關問題