Перекомпилируйте Heroku slug без нажатия или изменения конфигурации
мне интересно, есть ли способ заставить Heroku перекомпилировать slug без нажатия новых коммитов и/или обновления переменных конфигурации.
зачем мне это делать?:
Я использую Кедровый стек на Heroku для приложения Rails 3.2, и у меня возникли проблемы с rake assets:precompile
сбой задачи (только во время компиляции - - - позже он отлично работает с heroku run
). Я очень подозреваю, что это связано с тем, что некоторые переменные среды недоступны во время slug время компиляции, и я думаю heroku labs:enable user_env_compile
экспериментальная функция решит эту проблему.
однако, с user_env_compile
функция включена, изменения конфигурации не вызывают перекомпиляцию слизняка, и мой код не изменился, поэтому у меня нет никаких новых коммитов для нажатия.
конечно, я мог бы нажать" фиктивную " фиксацию с тривиальным изменением, что, вероятно, является самым простым ответом - - - но мне интересно, есть ли команда heroku, которая позволит мне напрямую перекомпилировать слизняк.
спасибо!
9 ответов:
компиляция Slug вызывается с помощью Git pre-recieve hook, поэтому единственный способ перекомпилировать-это нажать новую фиксацию.
для полноты смотрите эту статью на Heroku для компилятор слаг. Он обсудил использование предварительно получить крюк, чтобы вызвать процесс компиляции слаг по составлению заголовка.
самый простой обходной путь на данный момент является нажмите пустую фиксацию.
git commit --allow-empty -m "empty commit" git push heroku master
мой общий подход заключается в следующем:
git commit --amend -C HEAD git push heroku:master -f
не уверен, что я сделаю это в производстве, не будучи уверенным, поскольку он технически переписывает последний коммит, но теоретически это не должно вызывать никаких проблем. Это совершенно нормально, когда вы тестируете вещи в постановке, хотя.
в качестве дополнительного бонуса, так как большинство людей проблемы с использованием Vim для редактирования сообщений фиксации
SHIFT-ZZ
быстро сохранит и выйдет сообщение фиксации для вас без внесения каких-либо изменений оно.на соответствующей ноте я слегка шокирован Heroku все еще не имеет этой функции. Я часто видел, как Heroku не удается развернуть из-за проблем на их конце.
спасибо Майклу Миору за идею использовать
-C HEAD
чтобы избежать открытия редактора.
обновление: heroku repo: восстановление было удалены.
Heroku имеет API сборки, который вы можете использовать, см.:создание и выпуск с помощью API
можно использовать РЕПО:восстановить если heroku-repo надстройки.
heroku repo:rebuild -a appname
похоже, что это еще не доступно. Однако,запрос был открыт на Heroku GitHub repo
Он также упоминает " альтернативный способ построения, который не зависит от
git push
"
Heroku выпустили плагин, который то, что спрашивается:https://github.com/heroku/heroku-repo
чтобы установить его:
$ heroku plugins:install heroku-repo
чтобы заставить перестроить:
$ heroku repo:purge_cache -a appname $ heroku repo:reset -a appname $ git push heroku
есть в Heroku плагин для этого.
$ heroku plugins:install heroku-releases-retry Installing plugin heroku-releases-retry... done $ heroku releases:retry Retrying v16 on murmuring-lowlands-3398... done, v17