2012-04-30 2 views
0

Будучи новым для Heroku, я немного confused with add-ons.Могут ли конфигурации дополнения Heroku случайно меняться в облаке?

Это Heroku blog post примерно год назад цитирует с помощью переменных окружения надстроек в качестве лучшей практики:

Вашего приложение считывает конфигурации для бэк-сервисов, таких как базы данных, Memcached или исходящего SMTP-сервер от переменные среды (например, DATABASE_URL), а не жестко закодированные константы или файлы конфигурации. Это позволяет платформе легко подключать дополнительные ресурсы (при запуске heroku addons:add), без необходимости касаться вашего кода.

Я действительно использую переменные среды (через конфигурацию Heroku), но в одном случае я использую свои собственные vars вместо стандартного, добавляемого надстройкой.

(В частности, я предпочитаю использовать, например, CACHE_HOST, CACHE_PORT и т.д. для моего тайника Redis над Heroku-х REDISTOGO_URL Он чувствует себя как более точный/модульным и более общий характер -.. Особенно, когда я использую локальный экземпляр Redis, не RedisToGo, во время разработки.)

Мне интересно, это плохая практика? Могут ли дополнительные конфигурации, например, REDISTOGO_URL случайным образом изменять в облаке?

ответ

1

Ведущий инженер из команды надстройки Heroku. Чтобы ответить на ваш вопрос, а также ваши другие вопросы и аргументы:

  • Возможно ли изменение конфигурации дополнения? Да. Поставщики дополнений могут изменить его в любое время без предупреждения. Мы рекомендуем, чтобы поставщики не меняли его, если они абсолютно не нужны, так как это приведет к перезапуску вашего приложения и процессов. Но это может измениться, поэтому вы должны предположить, что это произойдет.

  • Более точные/модульные. Уже существует стандартизированный способ определения указателя на ресурс, URI. И мы рекомендуем, чтобы поставщики использовали это везде, где это возможно.

  • Более общий, особенно для местного развития. Ага. Мы признаем, что это проблема. Мы обсуждаем различные способы решения этой проблемы, в промежутке времени я бы рекомендовал использовать мастер и файл .env.

Надеюсь, что это поможет. Дайте мне знать, если есть что-то еще,

Glenn

+0

Замечательно, чтобы получить исчерпывающий ответ прямо из источника - огромное спасибо. Re: последний пункт, я действительно использую мастер и локальный файл .env; просто странно, что мой код полагается на конфигурацию под названием «REDISTOGO_URL» - это означает, что для этого кода RedisToGo должен предоставить базу данных Redis, которая кажется немного глупой.Возможно, может быть вариант «переименовать» дополнительные конфигурации/«сопоставить» их с разными именами? –

+0

Согласен, что это странно и, вероятно, нежелательно. Мы рассматриваем лучшие способы решения проблемы. Следите за обновлениями :) –

+0

Awesome! Благодарю. =) Я не могу ждать. –

0

Это своего рода точка переменных конфигурации. Если/If/Когда провайдер аддонов/Heroku должен изменить свои переменные, он может это сделать, не обновляя ни одну вашу кодовую базу. Очевидно, что это требует вашего вмешательства, если вы решите разделить переменные на свои собственные в соответствии с вашей переменной REDISTOGO_URL, но в целом я считаю, что это хороший дизайн.

+0

Спасибо за перспективу. Действительно ли это происходит на практике?/Хероку изменил переменные env без предварительного уведомления? –

+0

Почти три года использования Heroku я никогда не видел, чтобы это случилось (насколько мне известно) –

Смежные вопросы