Сбиваются url() в css файлах после конкатенации

Рейтинг: 2Ответов: 1Опубликовано: 24.10.2014

Ситуация

  1. Использую bower.
  2. В .bowerrc прописал директорию "vendor/assets/bower_components".
  3. В конифге application.rb прописал config.assets.paths << Rails.root.join('vendor', 'assets', 'bower_components').
  4. Я установил плагин fotorama.
  5. Все файлы фоторамы теперь лежат здесь "/vendor/assets/bower_components/fotorama".
  6. Затем добавил в application.css строку *= require fotorama/fotorama.css (я и в application.js что нужно добавил, но это здесь не важно).
  7. В файле layout'а, я прописал <%= stylesheet_link_tag "application", media: "all" %>.

Запускаю сервер rails server — всё работает просто идеально. Файл с css вставился таким образом <link href="/assets/fotorama/fotorama.css?body=1" media="all" rel="stylesheet" />, внутри этого файла есть строчка: .fotorama__video-play {background: url(fotorama.png) no-repeat}, и действительно, файл fotorama.png лежит рядышком с файлом css, указанном в теге <link>. Отрубаю сервер, перекомпилирую все ассеты rake assets:precompile и запускаю сервер в продакшн моде rails server -e production.

Проблема

В продакшн моде все css сливают в один большой файл, он выглядит так: <link href="/assets/application-2d31fc33890d01b046194920367eb3d4.css" media="all" rel="stylesheet" />, в нём по-прежнему есть строчка .fotorama__video-play {background: url(fotorama.png) no-repeat}, ну, в общем, из-за неё браузер пытается найти файл с картинкой здесь: http://localhost:3000/assets/fotorama.png, а его там нет, честно признаться, его вообще нигде теперь нет.

Вопросы:

  1. Почему картинки из папки /vendor/assets/bower_components не перелетели в папку public/assets?
  2. Чтобы такого придумать, чтобы всё заработало, при условии: не менять содержимое файла fotorama.css руками (програмно я согласен), потому что не комильфо руками лезть в вендорные пакеты?

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

Ответы

▲ 1

Эй, есть офигенный гем bower-rails. Ставишь, пишешь зависимости в Bowerfile, делаешь rake bower:install. Все проблемы с ассетами сразу устраняются.