0

Sass Web サイトの Sass -> CSS コンバーター コードをたどろうとしています。

template = File.load('stylesheets/sassy.sass')
sass_engine = Sass::Engine.new(template)
output = sass_engine.render
puts output

そして、しようとしているときにこのエラーが発生しますFile.load

SyntaxError in PublishController#index

/Users/jkim/rails/support-rhapsody/app/assets/stylesheets/application.sass:1: target of repeat operator is not specified: /* http:/
/Users/jkim/rails/support-rhapsody/app/assets/stylesheets/application.sass:2: no .<digit> floating literal anymore; put 0 before dot
   v2.0 | 20110126
      ^
/Users/jkim/rails/support-rhapsody/app/assets/stylesheets/application.sass:2: syntax error, unexpected tINTEGER
   v2.0 | 20110126
       ^
/Users/jkim/rails/support-rhapsody/app/assets/stylesheets/application.sass:3: syntax error, unexpected ':', expecting $end
   License: none (public domain) */

しかし、File.read を実行すると、output = sass_engine.render.

このエラーが発生します。

NoMethodError in PublishController#index

undefined method `[]' for nil:NilClass

File.read と File.load の違いは何ですか? そして、Sass でこの問題を解決する方法を知っていれば、なおさらです。

4

1 に答える 1

1

Ruby Kernel メソッド#loadでは、コードとしてロードされたテキストを評価することを意味します。これは、ここで行われているように見えます。 File.readテキストを文字列としてロードします。

sass docs からSass::Engine.new

新しいエンジンを作成します。Engine は、インメモリ Sass コードをコンパイルする場合にのみ直接使用する必要があることに注意してください。ファイルシステムから単一の Sass ファイルをコンパイルする場合は、Sass::Engine.for_file を使用します。ファイルシステムから複数のファイルをコンパイルする場合は、Sass::Plugin を使用します。

そうしてください。

于 2012-09-27T18:17:18.280 に答える