在Rails资产管道中使用libsass

11

我正在尝试让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没有任何经验,所以我甚至不确定是否正确地编译了所有内容等。


这个人过去已经使它工作了,看起来他不得不fork sass-rails: https://github.com/andrew/libsass-rails - Aaron Jensen
context.rb 文件的顶部添加以下内容:require_relative 'sass_options' - glasz
谢谢,我有时间会试一下,看看是否有所改善。我认为问题更多地在于编译的库没有被使用。 - Constant Meiring
@ConstantM 它起作用了吗? - Jonathan Allard
还不确定。我参与了一家初创公司,目前没有太多时间去玩这些东西。 :) - Constant Meiring
1个回答

2

没错,感谢这个宝石,我终于把它搞定了!该项目仍在开发中,需要一些支持者。:)

唯一的问题是您需要完全从项目中删除sass-rails,如果您使用ActiveAdmin之类的宝石,这可能会带来问题。但是有解决方法。然后,通过@import包含在scss文件中的纯css文件需要在导入文件名末尾添加.css


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接