2014-09-22 3 views
32

У меня есть плагин со многими типами файлов, а также свою собственную структуру дерева (HTML, CSS, JS, документация, изображения и т.д.)Как загрузить папку поставщика в Rails 4?

Вместо того, чтобы идти через папку плагинов и расщепляющих все CSS и JS файлов в папки vendor/assets/js/vendor/assets/css/, я хочу просто сохранить всю папку плагина как есть. Например,

vendor/assets/multipurpose_bookshelf_slider/

Как я могу убедиться, что пути загружается должным образом, и ссылаться на них в своих файлах манифеста?

В настоящее время у меня есть некоторые файлы место следующим образом (не исчерпывающий)

/my_app/vendor/assets/multipurpose_bookshelf_slider/css/skin01.css 
/my_app/vendor/assets/multipurpose_bookshelf_slider/js/jquery.easing.1.3.js 
/my_app/vendor/assets/multipurpose_bookshelf_slider/ 
/my_app/vendor/assets/multipurpose_bookshelf_slider/ 

Я ссылки на них в

application.js

//= require multipurpose_bookshelf_slider/js/jquery.easing.1.3.js 
//= require multipurpose_bookshelf_slider/js/jquery.bookshelfslider.min.js 

application.css.scss

@import "css/bookshelf_slider"; 
@import "css/skin01"; 

ответ

64

Любая папка, созданная непосредственно под assets, будет добавлена ​​в пути загрузки. Файлы в этой папке можно ссылаться как обычно, например, так:

Если у вас есть

  • vendor/assets/custom/js/file.js

  • vendor/assets/custom/css/file.css

затем vendor/assets/custom/ будут добавлены к путям нагрузки.

Включите ваши файлы в следующих файлах, выполнив следующие действия:

application.js

//= require js/file

application.css.scss

@import "css/file";

Как только это будет сделано, обязательно перезапустите локальный сервер, так как при запуске вашего сервера будут распознаны пути загрузки.

Примечание: чтобы просмотреть список путей загрузки, введите свой терминал rails c, затем введите Rails.application.config.assets.paths.

+1

почему application.css.scss вместо того, чтобы просто application.css? Это заслуживает немного большего объяснения для начинающих – emery

+0

scss - суффикс типа файла. он использует предварительный процессор sass/scss. в рельсах суффикс цепочки заставляет его разбираться с соответствующим «последним суффиксом» языка в этом порядке. http://thesassway.com/ Вопрос в том, как загрузить ресурсы, независимо от того, какой файл он есть. Если есть другие активы других суффиксов (например, jpg и т. Д.), То они также будут сопоставляться значениями регулярных выражений или буквенных строк. Хорошо прояснить материал для начинающих. Я действительно думаю, что это несущественно для вопроса. – ahnbizcad

+1

О, я понимаю, что вы имеете в виду. файл scss не упоминался в файле «master» css, application.css. Но, скорее, сама программа application.css была изменена. Честная оценка. Я отказываюсь от своего утверждения, что это несущественно. Ответ, удобно, в точности то же самое, хотя =] Препроцесс CSS супер удобен, а SASS/SCSS - довольно хороший. другие МЕНЬШЕ. Другим является Stylus, который, как я считаю, имеет более чистый синтаксис, чем другие, но, похоже, имеет меньше экосистемы вокруг него. – ahnbizcad

4

Если приложение, которое вы бежите активировал активы-трубопровод, он должен найти свои активы после расширения пути в вашем application.rb

config.assets.paths << Rails.root.join("multipurpose_bookshelf_slider") 
+0

Как говорится в ответе [ahnbizcad] (https://stackoverflow.com/a/25985318/641451), путь должен автоматически добавляться в пути к активам. Если вы их не видите, возможно, вам придется перезапустить приложение ** после добавления новой папки с производителем - путь поиска обновляется только во время запуска. – mgarciaisaia

2

Я предпочитаю ответ D7na, но с небольшим улучшением мое мнение.

Если это связано с активами, я думаю, что его лучше разместить в файле assets.rb.

assets.rb:

Rails.application.config.assets.paths << Rails.root.join("multipurpose_bookshelf_slider")