我正在尝试让libsass与Rails 4资产管道配合使用。到目前为止,我已将ruby-libsass宝石从Github克隆到我的应用程序的Vendor文件夹中。我将以下内容添加到我的gemfile中:
gem 'sassc', path: 'vendor/ruby-libsass/'
我按照文档的说明添加了libsass的子模块。 在libsass文件夹中,我不得不克隆sass2scss库进行编译。 我使用make install-shared
进行编译,并创建了/usr/local/lib/libsass.so
。之后,运行rake assets:precompile
会出现以下错误:
rake aborted!
LoadError: Could not open library 'sass': dlopen(sass, 5): image not found.
Could not open library 'libsass.dylib': dlopen(libsass.dylib, 5): image not found
所以我将libsass.dylib
链接到了/usr/local/lib/libsass.dylib
。之后,我收到了以下错误:
NameError: uninitialized constant SassC::Lib::Context::SassOptions
我尝试将/ruby-libsass/lib/sassc/lib/context.rb
中调用SassOptions的代码行注释掉,这似乎让它能够工作并编译资产。第20行被注释掉的代码,context.rb:
layout :source_string, :pointer,
:output_string, :string,
# :options, SassOptions,
:error_status, :int,
:error_message, :string,
:c_functions, :pointer,
:included_files, :pointer,
:num_included_files, :int`
现在,我遇到的问题是我没有看到速度上的差异。添加libsass到我的Gemfile中或不添加都需要大约7秒来编译我的资产。由于初始编译出错,涉及到缺少libsass.dylib文件,我认为它实际上是使用sassc而不是sass,但看起来并不是这样。
你有什么想法吗?我对C没有任何经验,所以我甚至不确定是否正确地编译了所有内容等。
context.rb
文件的顶部添加以下内容:require_relative 'sass_options'
。 - glasz