11

我正在尝试让 libsass 与 Rails 4 资产管道一起使用。到目前为止,我已经将ruby​​-libsass Gem 从 Github 克隆到了我的应用程序的 Vendor 文件夹中。我将以下内容添加到我的 gemfile 中:

gem 'sassc', path: 'vendor/ruby-libsass/'

然后我按照文档添加了 libsass 的子模块。在 libsass 文件夹中,我必须克隆到sass2scss库中才能编译。我用make install-sharedwhich created编译了它/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`

现在,我遇到的问题是我看不到速度差异。编译我的资产大约需要 7 秒,无论是否将 libsass 添加到我的 Gemfile。由于最初的编译给出了一个与找不到 libsass.dylib 文件有关的错误,我认为它实际上是使用 sassc 而不是 sass,但看起来不是。

有什么想法我可能会错过吗?我没有使用 C 的经验,所以我什至不确定我是否正确编译了所有内容,等等。

4

1 回答 1

2

对,多亏了这颗宝石,我终于让它工作了!该项目仍然是一个 WIP,并且可以与一些支持者一起做。:)

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

于 2015-04-10T07:40:43.133 回答