2012-04-08 15 views
12

Mam problem ze skompilowaniem zarchiwizowanych zasobów jako plików root.config.assets.precompile nie dodawanie zasobów dostawcy/klejnotu

Chcę mieć następujące aktywa dostępne autonomiczny (nie pakowane z innymi assets_:

vendor/gems/neo-viz/app/assets/stylesheets/neo-viz.css.scss 
vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js.coffee 
vendor/gems/neo-viz/app/assets/javascripts/lib/jQuery/jquery-1.6.1.min.js 
vendor/gems/neo-viz/app/assets/javascripts/lib/arbor/arbor.js 

z następującą linię:.

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css) 

Tylko plik CSS jest skompilowany i udostępniony Dlaczego ?

Również po obejrzeniu tego pytania (Including assets in subdirectories with config.assets.precompile in Rails) spróbowałem:

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css lib/arbor/arbor.js arbor/arbor.js lib/jQuery/jquery-1.6.1.min.js jQuery/jquery-1.6.1.min.js ) 

Ale to nie miało znaczenia. Pomysły?

Odpowiedz

18

Domyślnie Rails analizuje tylko 3 lokalizacje: app/assets, lib/assets lub vendor/assets. Sprockets szuka zasobów JS w podkatalogu javascripts. Na przykład.

app/assets/javascripts/arbor.js 
lib/assets/javascripts/arbor.js 
vendor/assets/javascripts/arbor.js 

Jeśli chcesz zobaczyć, gdzie Szyny poszukuje można to wykorzystać w konsoli: Rails.application.config.assets.paths

Co można zrobić, to dodać niestandardową ścieżkę do rurociągu:

# @file: config/application.rb 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts") 

Następnie utwórz manifest zawierający pliki JS:

# @file: /vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js 
//= require lib/jQuery/jquery-1.6.1.min 
//= require lib/arbor/arbor 
//= require neo-viz 

Dodaj jeszcze raz Twój manifest:

config.assets.precompile += %w(neo-viz.js)' 

Jeśli nadal chcesz dodać je Separatly, którego nie widzę sensu, dlaczego nie obejmują ich w manifeście, a następnie trzeba będzie dodać wszystko możliwe prefiksu ścieżka tak szyny nie wie, gdzie szukać:

# @file: config/application.rb 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "stylesheets") 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts") 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "jQuery") 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "arbor") 

Następnie można dodać je tak, ponieważ aktywa poza oczywisty musi być dodany do tablicy prekompilacji:

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css) 

Źródło: 2.1 Asset Organization

+1

To było bardzo pomocne. Minęło tak dużo czasu, ale tę odpowiedź należy sprawdzić jako _accepted_ imo. – sargas