Как организовать купленную тему, состоящую из связанных файлов javascript, css и изображений, в приложение Rails 3.1?

Итак, перенос приложения rails на 3.1 и всевозможные головные боли, связанные с функциональностью конвейера новых ресурсов. Самая большая проблема связана с правильной организацией темы, купленной на themeforest.net, в приложении, чтобы все работало в процессе разработки, тестирования и производства.

Тема, как и большинство, я полагаю, содержит взаимосвязанные javascript, css и изображения. В моем приложении Rails 3.0 оно было структурировано следующим образом:

public
    my_theme
        css
        images
        javascript

Учитывая новый пайплайн ассетов, как лучше организовать тему в 3.1?

Поскольку файлы в отдельных каталогах (css, images, javascript) ссылаются друг на друга, я надеюсь, что есть способ перенести их в приложение 3.1 без особых изменений фактического содержимого этих файлов тем.

Спасибо


person wgpubs    schedule 09.11.2011    source источник
comment
Можете ли вы отредактировать вопрос и предоставить список файлов в папках css и javascript? С этой информацией я могу хорошо помочь.   -  person Richard Hulse    schedule 06.12.2011


Ответы (2)


Принцип работы конвейера заключается в том, что он компилирует ресурсы из трех каталогов, упомянутых в документации: http://guides.rubyonrails.org/asset_pipeline.html (lib/assets,app/assets,vendor/assets) (ваша купленная тема может быть в vendor/assets).

Затем он берет каждый sudirectory в этих каталогах и помещает его в public/assets, где он становится доступным.

Таким образом, вы не ограничены vendor/assets/javascripts и т. д., это просто предложение.

Я бы предложил разместить их здесь: vendor/assets/theme_name_javascripts,vendor/assets/theme_name_images и т. д.

Если на ваши изображения ссылается: images/sprite.png, вы должны поместить его в: vendor/assets/theme_name_images/images/sprite.png

person Amala    schedule 07.12.2011
comment
Какие изменения требуются для ваших файлов CSS, которые ссылаются на изображения, например. фоновое изображение: url('../../img/build/header_bg2.png'); - person wgpubs; 12.12.2011
comment
Просто избавьтесь от всех ../../ Затем поместите изображение в каталог vendor/assets/theme_name_images/img/build/. Таким образом, вам придется делать минимум редактирования и перемещения. Кстати, это не сработает, если вы поместите свои активы в CDN. В этом случае вы должны использовать файлы SCSS. - person Amala; 13.12.2011
comment
не проще ли создать /vendor/assets/theme_name/ и положить в эту папку js, css, изображения? это возможно? - person Arnold Roa; 09.12.2014

Вот как я это сделал:

  • создать каталог vendor/my_theme
  • скопируйте каталоги тем (css, js, images, themes) в vendor/my_theme
  • создал файл config/initializers/my_theme.rb с содержимым:
HashtagifyPro::Application.configure do
  config.assets.paths << Rails.root.join("vendor", "my_theme")
end
  • измените ссылки css и js в html следующим образом: с ./css/all.css на /assets/css/all.css и ./js/my.js на /assets/js/my.js

И это все!

Кстати, если вы не хотите предварительно обрабатывать активы вашей темы с помощью sprockets, вполне законно оставить вашу тему в каталоге public/

person Dan Mazzini    schedule 10.12.2011
comment
Какие изменения требуются для ваших файлов CSS, которые ссылаются на изображения, например. фоновое изображение: url('../../img/build/header_bg2.png'); - person wgpubs; 12.12.2011