2014-11-01 14 views
11

Sto cercando di far funzionare libsass con la pipeline di asset di Rails 4. Finora ho clonato la gemma ruby-libsass da Github nella cartella Vendor della mia applicazione. Ho aggiunto il followig alla mia Gemfile:Utilizzo di libsass con la pipeline di asset Rails

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

Poi ho seguito i documenti e ha aggiunto sottomoduli per libsass. All'interno della cartella libsass ho dovuto clonare la libreria sass2scss per la sua compilazione. L'ho compilato con make install-shared che ha creato /usr/local/lib/libsass.so. Dopo questo, l'esecuzione rake assets:precompile dare il seguente errore:

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 

Così ho collegato simbolicamente libsass.dylib questo /usr/local/lib/libsass.dylib. Dopo di che, ho ricevuto il seguente errore:

NameError: uninitialized constant SassC::Lib::Context::SassOptions

ho provato commentando la linea in /ruby-libsass/lib/sassc/lib/context.rb che chiama SassOptions, e che sembrava di aver fatto il lavoro e la compilazione dei beni. Il codice commentata sulla linea 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` 

Ora, il problema che sto avendo è che non vedo alcuna differenza di velocità. Rimane a circa 7 secondi per compilare le mie risorse, con o senza l'aggiunta di libsass al mio Gemfile. Dal momento che la compilazione iniziale ha dato un errore relativo al fatto che il file tot libsass.dylib non è stato trovato, ho supposto che stia effettivamente usando sassc invece di sass, ma sembra che non lo sia.

Qualche idea di cosa potrei mancare? Non ho esperienza con C, quindi non sono nemmeno sicuro se ho compilato tutto correttamente, ecc.

+0

questo ragazzo ha funzionato in passato, sembra che abbia dovuto biforcarsi sass-rails: https://github.com/andrew/libsass-rails –

+0

in 'context.rb', aggiungere quanto segue in alto : 'require_relative 'sass_options''. – glasz

+0

Grazie ci provo quando ho un minuto e vedere se questo fa alcuna differenza. Penso che il problema sia più che le librerie compilate non vengano utilizzate. –

risposta

1

Giusto, finalmente ho funzionato grazie a this gem! Il progetto è ancora un WIP e può fare con alcuni sostenitori. :)

Unico problema che ho riscontrato è che è necessario rimuovere completamente sass-rails dal progetto, che può essere un problema se si utilizzano gem come ActiveAdmin. Ci sono tuttavia soluzioni alternative. Quindi, i semplici file CSS che vengono inclusi nei file scss con @import devono avere .css alla fine del nome file nell'importazione.

Problemi correlati