使用libsass和Rails资产管道

时间:2014-11-01 11:02:12

标签: ruby-on-rails ruby sass libsass

我正在尝试让libsass使用Rails 4资产管道。到目前为止,我已经将来自Github的ruby-libsass Gem克隆到我的应用程序的Vendor文件夹中。我将followig添加到我的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的经验,所以我甚至不确定我是否正确编译了所有内容等等。

1 个答案:

答案 0 :(得分:2)

是的,我终于通过this gem得到了它!该项目仍然是一个WIP,可以与一些支持者。 :)

我遇到的唯一问题是您需要从项目中完全删除sass-rails,如果您使用像ActiveAdmin这样的宝石,这可能会有问题。但是有一些解决方法。然后,包含在@import的scss文件中的普通css文件需要在导入文件名末尾有.css