Оказалось, что две части моего вопроса несовместимы - @eugen объясняет, как реализовать привязку после развертывания, но также напомнил мне, что любые создаваемые мной tmp-каталоги будут выдуваться при каждом перезагрузке dyno ...
Так в чем же решение? Вот, что я придумал:
конфигурации/Инициализаторы/setup.rb
# Ensure temp file system is set up:
begin
Dir.mkdir("tmp/customdir") unless File.exists?("tmp/customdir")
rescue StandardError => e
# Allow this to fail on initial deploy
# (It will raise error: "No such file or directory - tmp/customdir" because the tmp dir won't yet exist)
end
Объяснение: Heroku по существу делает инициализацию два прохода во время разворачивает. Первый проход, когда он предварительно компилирует активы, обычно задыхается над вышеуказанным кодом, потому что каталог tmp еще не существует. Если мы разрешим ему провалиться, он будет работать на втором проходе и последующих перезапусках.
Да, это взломать. У меня есть tried before, чтобы выяснить, как отличить инициализацию до компиляции и нормальные инициализации, но, похоже, это не так, так что это то, с чем мы остались.
Если кто-то может улучшить это, он бы хотел его услышать.
@ eugen- спасибо за это. Даю вам кредит, потому что вы ответили на первую часть, но также указали, что то, что я пытаюсь достичь, на самом деле не будет работать на крюке развертывания. [Мой ответ] (http://stackoverflow.com/a/21652889/165673) предоставляет решение/взломать вторую часть ... – Yarin