2011-11-07 17 views
6

Ho un sacco di file "bootstrap" sass che vorrei incollare nella mia directory delle applicazioni /lib, seguendo le nuove convenzioni della pipeline degli asset.Rails 3.1: Importazione Sass da Lib

Tuttavia, ho bisogno di importarli nel mio application.css.scss invece di richiederli, dato che mi piacerebbe condividere alcune variabili di colore ecc. In tutta l'app. Non sono stato in grado di trovare un modo per ottenere @import per prendere un file .scss da /lib/assets/stylesheets.

Qualche suggerimento?

risposta

10

@importdovrebbe look per qualsiasi file .css.scss si trovano nel percorso asset di carico, sia in app/assets/stylesheets, lib/assets/stylesheets, vendor/assets/stylesheets, o qualsiasi percorsi aggiuntivi aggiunti da gemme, quindi è strano che si stanno ottenendo un errore.

Nota non è necessario passare un nome di cartella quando si utilizza @import a meno che il file è in una sottodirectory di assets/stylesheets - sass-rails cercherà attraverso ogni cartella del percorso di carico e vedere se la risorsa esiste rispetto a quelle cartelle.

Per garantire che lib/assets/stylesheets sia nel percorso di caricamento delle risorse (che dovrebbe essere, poiché è un'opzione predefinita) aprire un prompt di Rails e digitare Rails.application.config.assets.paths. A titolo di esempio, ecco il risultato di una delle mie applicazioni:

ruby-1.9.3-p0 :012 > Rails.application.config.assets.paths 
=> ["/Users/tom/ruby/qa/app/assets/images", 
"/Users/tom/ruby/qa/app/assets/javascripts", 
"/Users/tom/ruby/qa/app/assets/stylesheets", 
"/Users/tom/ruby/qa/lib/assets/stylesheets", 
"/Users/tom/ruby/qa/vendor/assets/javascripts", 
"/Users/tom/ruby/qa/vendor/assets/stylesheets", 
"/Users/tom/.rvm/gems/ruby-1.9.3-p0/gems/jquery-rails-1.0.14/vendor/assets/javascripts", 
"/Users/tom/.rvm/gems/ruby-1.9.3-p0/gems/bootstrap-sass-1.4.0/vendor/assets/javascripts", 
"/Users/tom/.rvm/gems/ruby-1.9.3-p0/gems/bootstrap-sass-1.4.0/vendor/assets/stylesheets"] 

Vale anche la pena assicurando che sass-rails è fino ad oggi e l'ultima versione, in quanto credo prime versioni avevano il supporto limite in termini di cross-cartella @import.

NB: Credo anche che convenzione suggerisce file come Bootstrap o jQuery dovrebbe andare nella cartella vendor/assets piuttosto che lib/assets

+0

Grazie per l'aiuto, ho funzionato. Devo aver appena avuto un errore di battitura da qualche parte. FWIW il file di bootstrap in questione è una mia creazione personalizzata che utilizzo per avviare nuove app, quindi mi sembra "lib" (condivisa tra le mie app) piuttosto che "vendor" (distribuzioni pubbliche). – Andrew

+0

Sì, avrebbe senso, ho appena aggiunto i punti tra il tuo commento sulla mia risposta di ieri e la tua domanda ora e ho pensato che stavi usando una versione di Bootstrap di Twitter, in tal caso, ignorare la mia nota, 'lib' è sicuramente il giusto place – nobody

+0

Oh ... :) In realtà il motivo principale del mio commento sulla tua risposta era che ero molto felice di trovare un esempio di un bootstrap trasformato in un gioiello che utilizzava la pipeline degli asset. Mi piacerebbe estrarre il mio bootstrap personalizzato in una gemma un giorno e il tuo è un ottimo riferimento su come farlo. Per ora basta spostarlo in lib è una bella pulizia. Grazie ancora! – Andrew

8

Ho avuto lo stesso problema, ed è stato perché mi sono dimenticato di server riavvio dopo aggiungi file alla directory lib.

+1

Doh. Quante volte dimenticherò di fare questo. (troppi) –

+1

Proprio così – Yarin