Подтвердить что ты не робот

Лучший способ объединить и минимизировать JS/CSS на Heroku

Прежде всего, в соответствии с этим ответом параметр :cache => true на stylesheet_link_tag и javascript_include_tag не работает на Heroku. Это правда? Я нашел :cache => true для работы иногда, но не всегда (странно!)

Кроме того, какое лучшее решение здесь? В идеале он будет легко комбинировать и минимизировать все CSS/JS. Heroku Asset Packager утверждает, что это - лучшие варианты?

4b9b3361

Ответ 1

Я использую Jammit на Heroku. Прекрасно работает. Вы можете локально построить свои активы и зарегистрироваться в герою. использовать

jammit --force

текущая версия 0.5.1 имеет проблемы, связанные с heroku, но вы можете установить исправленную версию из git://github.com/documentcloud/jammit.git

Если вы используете Rails 3, укажите ниже в своем Gemfile поставщика:

gem "jammit", :git => "git://github.com/documentcloud/jammit.git"

Для Rails 2. *

config.gem "jammit", :source => "git://github.com/documentcloud/jammit.git"

Удачи.

Ответ 2

Я обнаружил, что добавление крюка git pre-commit, который компилирует и упаковывает активы, а затем добавляет их в текущую фиксацию, пригодится в этом случае.

Шахта с использованием Jammit выглядит примерно так (в .git/hooks/pre-commit):

jammit
rake barista:brew
git add public/assets/*
git add public/javascripts/*

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

Ответ 4

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

:cache => 'all.css'
:cache => 'all.js'

вместо "true"

Ответ 5

Это другой способ управления вашим CSS/Javascript, но вы можете проверить плагин Rails shoebox.

Shoebox может комбинировать, минимизировать и кэшировать.

Ответ 8

Есть, вероятно, различные способы сделать это, но то, что работает для меня, - это минимизировать перед нажатием. Затем я использую поддерево, чтобы мои файлы сборки были отделены от "исходных" файлов. Например, если вы создаете папку с именем "dist", вы можете нажать на поддерево, называемое heroku/master, как это:

git subtree push --prefix dist heroku master

Не забудьте гарантировать, что папка dist не будет проигнорирована (часто это по умолчанию) - поэтому отредактируйте файл .gitignore соответственно.

Команда -prefix гарантирует, что папка dist фактически станет "корневой" папкой с точки зрения этой ветки.