Мне интересно, есть ли способ заставить Heroku перекомпилировать слаг без нажатия новых коммитов и / или обновления переменных конфигурации.
Зачем мне это делать?
Я использую стек Cedar в Heroku для приложения Rails 3.2, и у меня возникают проблемы с rake assets:precompile
ошибкой задачи (только во время компиляции - позже она отлично работает с a heroku run
). Я очень подозреваю, что это связано с тем, что некоторые переменные среды не были доступны во время компиляции слагов, и я думаю, что heroku labs:enable user_env_compile
экспериментальная функция решит эту проблему.
Однако, с user_env_compile
включенной функцией, изменения конфигурации не вызывают перекомпиляцию slug, и мой код не изменился, поэтому у меня нет никаких новых коммитов для отправки.
Конечно, я мог бы выдать «фиктивный» коммит с тривиальным изменением, что, вероятно, является самым простым ответом - но мне интересно, есть ли команда heroku, которая позволит мне напрямую перекомпилировать слаг.
Спасибо!
Ответы:
Компиляция слагов запускается с помощью git pre-recieve hook, поэтому единственный способ перекомпилировать - это нажать новый коммит.
Для полноты см. Эту статью о Heroku для компилятора слагов . В нем обсуждалось использование ловушки предварительного получения для запуска процесса компиляции слагов под заголовком «Компиляция».
источник
repo:rebuild
больше не является действительной командой в плагине, как можно увидеть здесь: github.com/heroku/heroku-repo/commit/…Самый простой обходной путь на данный момент - это нажать пустой коммит .
источник
git reset HEAD~; git push -f heroku master
. Затраты времени на развертывание другого Heroku, но чистая история FTW.~/.profile
добавлении:alias heroku-rebuild="git reset HEAD~; git push -f heroku master"
илиalias heroku-rebuild="git commit --allow-empty -m 'empty commit' && git push heroku master"
вы можете просто набратьheroku-rebuild
Мой общий подход заключается в следующем:
Не уверен, что я сделал бы это в производстве, не будучи уверенным, поскольку это технически переписывает последний коммит, но не должно вызывать каких-либо проблем в теории. Это прекрасно для тех случаев, когда вы тестируете вещи в постановке.
В качестве дополнительного бонуса, поскольку у большинства людей проблемы с использованием Vim для редактирования сообщений коммитов.
SHIFT-ZZ
они быстро сохранят и выйдут из сообщения фиксации, не внося в него никаких изменений.С другой стороны, я слегка шокирован, что у Heroku до сих пор нет этой функции. Я часто видел, как Heroku не удалось развернуть из-за проблем с их стороны.
Спасибо Майклу Миору за идею использовать его,
-C HEAD
чтобы не открывать редактор.источник
git commit --amend -C HEAD
чтобы вообще не открывать редактор и сохранить сообщение о коммите.Heroku выпустила плагин, который спрашивает: https://github.com/heroku/heroku-repo
Чтобы установить это:
Для принудительного восстановления:
источник
Обновление: Heroku репо: восстановление было удалено .
Heroku имеет API для сборки, который вы можете использовать, см. Сборка и выпуск с использованием API
Вы можете использовать команду repo: rebuild, если надстройка heroku-repo .
https://github.com/heroku/heroku-repo
источник
Похоже, это еще не доступно. Тем не менее, запрос функции был быть открыт на Heroku GitHub репо
В нем также упоминается «альтернативный способ построения, который не зависит от
git push
»https://github.com/ddollar/heroku-anvil
источник
Для этого есть плагин heroku .
источник
Удалите ветку, затем снова нажмите ее. Не нужно использовать плагин.
источник
git push --force
должно сработать :)источник