Рубрика «configuration» - 2

Elixir: Развёртывание приложений с помощью Edeliver - 1

Мы уже обсуждали сборку и развёртывание приложений Elixir(перев: с помощью exrm): как осуществлять миграции поверх релиза или как работать с переменными среды. Пришло время открыть для себя ещё один инструмент, который поможет развёртывать Elixir приложения.

Практика развёртывания Elixir приложений и дальнейшее отслеживание их работы на нодах с помощью Exrm позволяет нам чувствовать себя гораздо увереннее в вопросах управления релизами в production. Однако возникает следующий вопрос: как управлять самим процессом развёртывания? Конечно, мы можем воспользоваться Capistrano, особенно если в мир Elixir мы пришли из Rails. Но посмотрим на цитату из Edeliver README:

edeliver основан на доставке и предоставляет bash-скрипт для сборки и развёртывания Elixir и Erlang приложений, а так же позволяет совершать "горячее" обновление кода.

Пытаться организовать весь процесс развёртывания вручную — это жёсткая головная боль с кучей повторяющегося кода. А вот использование Edeliver для развёртывания оказалось очень простым с первой же попытки! В конце концов, весь процесс развёртывания уместился в один меленький bash-скрипт:

#!/bin/bash -ex

BRANCH=${1:-master};

mix edeliver build release --branch=BRANCH --verbose
mix edeliver deploy release to production --verbose
mix edeliver start production --verbose
mix edeliver migrate production up --verbose

Скорее всего Вам придётся подкрутить этот скрипт под собственные нужды. Мы используем его только для развёртывания в production, но Вы так же можете использовать его и для staging развёртываний. Описание того, как всё это работает — под катом.

Читать полностью »

Я думаю вы знакомы с методом configure, который многие гемы предоставляют для конфигурации. Например конфигурация carrierwave:

CarrierWave.configure do |config|
  config.storage = :file
  config.enable_processing = false
end

Как реализовать это в своем модуле?
Читать полностью »

Существует множество различных конфигурационных библиотек, доступных в Java, например, одна от Apache Commons, но они как правило, следуют очень простому шаблому: парсинг ряда конфигурационных файлов и построение на основе этих данных Property или Map, у которого в дальнейшем и запрашиваются значения:

Double double = config.getDouble("number");
Integer integer = config.getInteger("number");

Но этот подход меня не устраивает по нескольким причинам:

  • Во-первых, получается достаточно многословно;
  • Приходится передавать конфигурационный объект целиком, даже если от него требуется всего один параметр;
  • Очень просто допустить ошибку в ключе и прочитать некорректные данные.

Читать полностью »

Агрегация каналов между Cisco Catalyst и Avaya ERS

Сделаем небольшую лабу. Объедением два физических линка в один логический между коммутаторами двух разных вендоров при помощи протокола LACP.
Читать полностью »

Как известно, некоторым модулям (таким как Google Analytics например) необходима некоторая начальная настройка, прежде чем они смогут хоть как-то функционировать. Кроме того, иногда, приходится сталкиваться с ситуацией, когда еще при установке модуля требуется узнать от пользователя какую-то информацию. Конечно, Drupal позволяет в каждом конкретном случае сделать все это с помощью механизма хуков. Однако, я решил, что будет лучше иметь некий унифицированный способ, интерфейс для решения данной задачи. Для этих целей и был написан небольшой сервис-модуль под названием PostInstall.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js