2011-11-07 12 views
6

Mam kilka plików "bootstrap", które chciałbym umieścić w katalogu aplikacji, zgodnie z nowymi konwencjami potoku zasobów.Rails 3.1: Import Sass z Lib

Muszę jednak zaimportować je do mojego application.css.scss zamiast ich wymagać, ponieważ chcę udostępnić niektóre zmienne kolorów itp. W całej aplikacji. Nie byłem w stanie znaleźć sposobu, aby uzyskać @import, aby pobrać plik .scss z /lib/assets/stylesheets.

Wszelkie sugestie?

Odpowiedz

10

@importpowinny szukać jakichkolwiek .css.scss plików znajdujących się na swojej drodze obciążenia aktywów, czy to w app/assets/stylesheets, lib/assets/stylesheets, vendor/assets/stylesheets, ani żadnych dodatkowych ścieżek dodanych przez klejnotów, więc jest to dziwne, że jesteś coraz błąd.

Uwaga nie trzeba przekazać nazwę folderu przy użyciu @import chyba że plik znajduje się w podkatalogu assets/stylesheets - sass-rails będzie patrzeć przez każdego folderu na swojej drodze obciążenia i sprawdzić, czy zasób istnieje w stosunku do tych folderów.

Aby upewnić się, że znajduje się na ścieżce ładowania zasobów (która powinna być, ponieważ jest to opcja domyślna), należy otworzyć okno dialogowe Rails i wpisać Rails.application.config.assets.paths. Jako przykład, oto wynik dla jednego z moich zastosowań:

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"] 

Warto również zapewnienie, że sass-rails jest aktualne i korzystają z najnowszej wersji, ponieważ wierzę, wczesne wersje miały wsparcie graniczną w zakresie cross-folderze @import.

NB: Wierzę również, że konwencja sugeruje plików, takich jak Bootstrap lub jQuery powinny iść w folderze vendor/assets zamiast lib/assets

+0

Dzięki za pomoc, mam to działa. Musiałem gdzieś mieć literówkę. FWIW, o którym mowa, to mój własny niestandardowy program, którego używam do rozpoczynania nowych aplikacji, więc wydaje mi się, że to "lib" (udostępniane przez moje własne aplikacje), a nie "sprzedawca" (dystrybucje publiczne). – Andrew

+0

Tak, to ma sens, właśnie dołączyłem do kropek między twoim komentarzem do mojej wczorajszej odpowiedzi a twoim pytaniem teraz i doszedłem do wniosku, że używasz jakiejś wersji Bootstrapa na Twitterze, w tym przypadku pomiń mój przypis, "lib" jest zdecydowanie słuszny miejsce – nobody

+0

Oh ... :) Właściwie głównym powodem mojego komentarza na temat odpowiedzi było to, że byłem bardzo szczęśliwy, gdy znalazłem przykład bootstrapu, który stał się klejnotem wykorzystującym potok aktywów. Chciałbym kiedyś wyodrębnić mój niestandardowy bootstrap w klejnot, a twoja jest świetnym odniesieniem, jak to zrobić. Na razie po prostu przeniesienie go do biblioteki jest miłym posprzątaniem. Dzięki jeszcze raz! – Andrew

8

miałem ten sam problem, a to dlatego, że zapomniałem serwer restartu po dodaj pliki do katalogu lib.

+1

Doh. Ile razy zapominam o tym. (za dużo) –

+1

Tak, zrobiłem to – Yarin