24

我有一个成功运行的 Rails 3 应用程序compass init rails ./ --using blueprint。我可以@import从 /stylesheets 目录中创建文件,但是当我尝试@import compass.

现在该应用程序有两个简单的 sass 文件:

common.scss

$body-background: blue;

主文件

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

我已经完成了,也许我必须明确告诉 Sass 在哪里可以找到 Compass gem,所以我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

7 回答 7

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 而不是something.sass

还有一件事,我的 config 目录中有一个旧的 compass.rb 文件,这在 Rails 3.2 中不需要。删除它也为我解决了这个问题。

于 2012-01-26T16:45:08.367 回答
9

我通过切换到compass-railsgem 而不是compassGemfile 中的 gem 解决了这个问题(不要忘记重新启动服务器)。以防万一有人碰到这里。

于 2012-05-08T13:59:27.970 回答
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

于 2013-02-08T14:00:50.007 回答
4

好的,在了不起的 Chris Eppstein 的帮助下,我找到了有问题的线路。在config/environments.rb我有这条线:

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

对于当前版本的 Rails(我有 3.0.7)和 Compass(0.11.1),这条线是不必要的。我在遵循教程后添加了它。如果 sass 找不到 compass,可能是因为这条线弄乱了你的Sass::Plugin.options[:template_location].

于 2011-05-22T20:29:35.513 回答
3

我通过从https://github.com/Compass/compass-rails/issues/19中的提示移出gem 'compass-rails', '~> 1.0.1'中的:assets组,在我的 Rails 3.2.0 服务器上解决了这个问题。Gemfile

于 2012-05-30T22:04:20.380 回答
2

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

看起来安装中遗漏了一些东西。(也许这条线compass install blueprint?)我按照这里的步骤操作:http: //compass-style.org/reference/blueprint/并且无法重新创建问题。

于 2011-05-15T02:54:06.590 回答
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 之后

于 2013-06-15T18:44:02.737 回答