Я пытаюсь заставить libsass работать с конвейером Rails 4. До сих пор я клонировал ruby-libsass Gem из Github в папку 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`
Теперь проблема заключается в том, что я не вижу разницы в скорости. Он составляет около 7 секунд, чтобы скомпилировать мои активы, с добавлением libsass или без него в мой Gemfile. Поскольку исходный компилятор дал ошибку, связанный с отсутствием файла libsass.dylib, я предположил, что он фактически использует sassc вместо sass, но похоже, что это не так.
Любые идеи, что я могу потерять? У меня нет опыта работы с C, поэтому я даже не уверен, правильно ли я скомпилирован и т.д.