Mam więc app/assets/stylesheets/
strukturę katalogów, która wygląda mniej więcej tak:
|-dialogs
|-mixins
|---buttons
|---gradients
|---vendor_support
|---widgets
|-pages
|-structure
|-ui_elements
W każdym katalogu znajduje się wiele części sass (zwykle * .css.scss, ale jeden lub dwa * .css.scss.erb).
Mogę dużo przypuszczać, ale rails POWINNY automatycznie kompilować wszystkie pliki w tych katalogach z powodu *= require_tree .
w application.css, prawda?
Niedawno próbowałem zmienić te pliki, usuwając wszystkie zmienne kolorów i umieszczając je w pliku w app/assets/stylesheets
folderze głównym (_colors.css.scss). Następnie utworzyłem plik w app/assets/stylesheets
folderze głównym o nazwie master.css.scss, który wygląda następująco:
// Color Palette
@import "colors";
// Mixins
@import "mixins/buttons/standard_button";
@import "mixins/gradients/table_header_fade";
@import "mixins/vendor_support/rounded_corners";
@import "mixins/vendor_support/rounded_corners_top";
@import "mixins/vendor_support/box_shadow";
@import "mixins/vendor_support/opacity";
Nie bardzo rozumiem, jak rails radzą sobie z porządkiem kompilacji zasobów, ale oczywiście nie jest to na moją korzyść. Wygląda na to, że żaden z plików nie zdaje sobie sprawy, że ma importowane zmienne lub miksy, więc generuje błędy i nie mogę skompilować.
Undefined variable: "$dialog_divider_color".
(in /home/blah/app/assets/stylesheets/dialogs/dialog.css.scss.erb)
Undefined mixin 'rounded_corners'.
(in /home/blah/app/assets/stylesheets/widgets.css.scss)
Zmienna $dialog_divider_color
jest jasno zdefiniowana w _colors.css.scss i _master.css.scss
importuje kolory oraz wszystkie moje miksy. Ale najwyraźniej rails nie dostały tej notatki.
Czy istnieje sposób, w jaki mogę naprawić te błędy, czy też będę musiał uciec się do umieszczenia wszystkich moich definicji zmiennych z powrotem w każdym pojedynczym pliku, jak również wszystkich importowanych plików mixin?
Niestety, ten facet nie wydaje się sądzić, że to możliwe, ale mam nadzieję, że się myli. Wszelkie myśli są mile widziane.