我正在尝试关注Sass - > Sass website上的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中解决这个问题,那就更好了。
答案 0 :(得分:1)
在Ruby Kernel方法#load
中,它意味着评估加载为代码的文本,这就是在这里完成的。 File.read
将文本加载为String。
来自Sass::Engine.new
创建一个新引擎。请注意,只应在编译内存中的Sass代码时直接使用Engine。如果要从文件系统编译单个Sass文件,请使用Sass :: Engine.for_file。如果您正在从文件系统编译多个文件,请使用Sass :: Plugin。
这样做。