конвейер активов rails3 и конфликты файлов - PullRequest
6 голосов
/ 13 февраля 2012

Я обновляю существующее приложение rails 2 до rails 3, и у меня возникли проблемы с пониманием конвейера ресурсов.Я прочитал руководство и, насколько я понимаю, файлы в любом из следующих каталогов будут преобразованы в / assets:

  • app / assets
  • lib/ assets
  • продавец / активы

и вы можете получить к ним доступ с помощью помощников ... то есть

image_tag('logo.png')

Но я не понимаю, как возникают коллизииобрабатываются?Например, что если есть следующие файлы:

  • app / assets / images / logo.png
  • lib / assets / images / logo.png

Если я зайду на myapp.com/assets/images/logo.png, какой файл будет возвращен?Я мог бы вручную проверить наличие коллизий в моем приложении, но это становится проблемой при использовании драгоценных камней, которые полагаются на конвейер ресурсов.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

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

Это кажется небольшим недостатком дизайна, поскольку драгоценный камень не можетПространство имен своих активов

0 голосов
/ 14 февраля 2013

Почему бы не воспользоваться index манифестом и организовать app/assets в разделенные модули?Затем вы можете сослаться на конкретное изображение image_tag('admin/logo.png') и бесплатно получить свою кодовую базу пользовательского интерфейса, организованную более осмысленным образом.Вы даже можете рекламировать сложный компонент, такой как одностраничное приложение, в свой собственный модуль и повторно использовать его из разных частей приложения.

Допустим, ваше приложение состоит из трех модулей: общедоступной части и администратора.Пользовательский интерфейс и, например, CRM, позволяющая вашим агентам отслеживать процесс продаж в вашей компании:

app/assets/
├── coffeescripts
│   ├── admin
│   │   ├── components
│   │   ├── index.coffee
│   │   └── initializers
│   ├── application
│   │   ├── components
│   │   ├── index.sass
│   │   └── initializers
│   └── crm
│       ├── components
│       ├── index.sass
│       └── initializers
├── images
│   ├── admin
│   ├── application
│   └── crm
└── stylesheets
    ├── admin
    │   ├── components
    │   └── index.sass
    ├── application
    │   ├── components
    │   └── index.sass
    └── crm
        ├── components
        └── index.sass

21 directories, 6 files

Не забудьте обновить application.rb, чтобы они были правильно скомпилированы:

  config.assets.precompile = %w(admin.js application.js crm.js 
                                admin.css application.css crm.css)
...