Ссылка на создание пути к изображению не работает в Rails 4

Пожалуйста, помогите кому-нибудь, потратил на это несколько часов, и это сводит меня с ума.

Я на рельсах 4, использую apache / пассажира, если это помогает. Также я запустил: «rake assets: precompile» и перезапустил apache.

Я использую это в своей таблице стилей:

background-image: url(image-path('pretty-background-image.jpg'));

В производстве это выводится в файле css:

background-image: url("/assets/pretty-background-image.jpg");

Я понимаю, что из этого тикета и большого количества возни вывести что-то вроде этого ДОЛЖНО быть выведено:

background-image: url("/assets/pretty-background-image-8b313354987c309e3cd76eabdb376c1e.jpg");

Но это не так. У меня такие же проблемы со шрифтами при попытке использовать:

asset-url('font-name.eot')

Все остальные изображения в файлах html.erb отображаются нормально (с дополнительной строкой цифр и букв в конце), но внутри моих таблиц стилей ничего не работает.


person newUserNameHere    schedule 30.09.2013    source источник
comment
Судя по документации, это должно быть background-image: image-url("pretty-background-image.jpg"); - guides.rubyonrails. org /   -  person veritas1    schedule 30.09.2013
comment
как вы генерируете свои активы? правильно ли настроена среда?   -  person phoet    schedule 30.09.2013
comment
@ veritas1 - Итак, ссылка, которую вы мне прислали, ссылается на файлы, обслуживаемые Sprockets, которые не включены в производственной среде. Я думаю, вы неправильно читаете руководство, звездочки подходят для разработчиков, а не для производства, поскольку они не могут справиться с высокой нагрузкой. Я думаю, что фоновое изображение должно быть чем-то вроде всех других изображений, например: background-image: url (/assets/pretty-background-image-8b313354987c309e3cd76eabdb376c1e.jpg);   -  person newUserNameHere    schedule 30.09.2013
comment
@phoet Я не уверен, что понимаю, о чем вы спрашиваете. Я использую rake assets: precompile и пробовал редактировать переменные среды несколькими способами. Вот моя текущая производственная конфигурация: pastebin.com/9paYEUvT Я потратил не менее часа на постепенное изучение и включение пункты один за другим, это, похоже, совсем не помогло. 2 вещи, на которые следует обратить внимание: 1. Rails меняет путь в css при компиляции, как указано выше (только не на правильный путь), и 2. Все изображения за пределами css компилируются с правильным путем и имеют цифры / буквы в конце. в конце файла.   -  person newUserNameHere    schedule 30.09.2013
comment
вы пробовали RAILS_ENV=production rake assets:precompile?   -  person phoet    schedule 30.09.2013
comment
Нет, у меня не было, и теперь это исправлено. Вы, друг мой, гений. Спасибо!!!   -  person newUserNameHere    schedule 30.09.2013
comment
@phoet - раз уж вы понимаете, что здесь происходит, я оставлю это вам. Если вы думаете, что этот вопрос может помочь другим (я скажу это, я искал ключевые слова в этом сообщении, и это, безусловно, помогло бы мне), опубликуйте свой ответ, чтобы я мог принять, в противном случае я удалю вопрос как не чтобы загромождать сайт. Кроме того, если вы хотите внести какие-либо дополнительные правки в вопрос, чтобы сделать его более актуальным, или хотите, чтобы я не стеснялся, я буду счастлив сделать это.   -  person newUserNameHere    schedule 30.09.2013


Ответы (1)


rails 4 имеет несовместимые изменения, когда дело доходит до конвейера активов.

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

Одним из тех моментов, которые действительно раздражали в rails 3, был способ работы rake assets:precompile.

он ВСЕГДА пытался запустить задачу в производственной среде. и он запускался дважды для создания активов с отпечатками пальцев и без них.

в настоящее время вы должны передать окружение задаче rake, например RAILS_ENV=production rake assets:precompile, когда вы хотите сгенерировать активы в продакшене.

новая задача не создает никаких активов без отпечатков пальцев. если вы хотите их иметь, вам нужно создать для этого какие-то нестандартные вещи (символические ссылки из manifest.yml в вашей задаче capistrano и т. д.).

person phoet    schedule 30.09.2013