24

Rails3アプリを実行できましたcompass init rails ./ --using blueprint。/ stylesheetsディレクトリからファイルを作成でき@importますが、しようとするとエラーが発生し@import compassます。

現在、アプリには2つの単純なsassファイルがあります。

common.scss

$body-background: blue;

main.scss

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

body { 
  background: $body-background; 
}

@import "compass"コメントアウトされた行で、これは機能します-私は青い背景を取得するので、Sassが機能していることがわかります。

行のコメントを外して、インポートcompassなどを行おうとするとblueprint、次のようなエラーが発生します。

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_pathconfig/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"

私は2日間グーグルを続けていますが、基本的な@importステートメントでこの問題が発生している理由を特定できません。コンパスとブループリントのライブラリがどこにあるかをSassに伝えるにはどうすればよいですか?

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.sassではなくsomething.css.sassであることを確認してください

そしてもう1つ、私はconfigディレクトリに古いcompass.rbファイルを持っていましたが、これはRails3.2では必要ありません。それを削除することも私にとってこの問題を解決しました。

于 2012-01-26T16:45:08.367 に答える
9

compass-railsGemfileのgemではなくgemに切り替えることでこの問題を修正しましたcompass(サーバーを再起動することを忘れないでください)。誰かがここに出くわすかもしれない場合に備えて。

于 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)    

Rails3.2.11を使用しています

于 2013-02-08T14:00:50.007 に答える
4

さて、素晴らしいクリス・エプシュタインの助けを借りて、私は問題のあるラインを見つけることができました。私はこの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がコンパスを見つけられない場合は、この行があなたのを台無しにしていることが原因である可能性がありますSass::Plugin.options[:template_location]

于 2011-05-22T20:29:35.513 に答える
3

Rails 3.2.0サーバーで、 https://github.com/Compass/compass-rails/issues/19のヒントから、のグループgem 'compass-rails', '~> 1.0.1'から移動することで、この問題を修正しました。:assetsGemfile

于 2012-05-30T22:04:20.380 に答える
2

Sassの@importコマンドは、.cssファイルではなく.scssまたは.sassファイルをインポートします。

インストールで何かが見落とされたようです。(多分行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 に答える