среда, 26 июня 2013 г.

Памятка по bundle

Bundler управляет зависимостями руби приложений.
Существует много различных команд бандлера. Рассмотрим основные из них, а также стандартный workflow.
Основные команды:
bundle install - скачивает все зависимости из Gemfile для вашего приложения. Если не существовал Gemfile.lock, то из удаленного репа скачиваются зависимости и происходит установка. Если Gemfile.lock существовал, и Gemfile не был изменен, то все зависимости разрешиются из Gemfile.lock. Если Gemfile.lock существовал, и был обновлен Gemfile, то все зависимости, которые не обновлены, будут выбираться из Gemfile.lock, а новые перерезолвятся согласно Gemfile. Команда install обновляет кеш (vendor/cache). Команда install  при выполнении сначала проверяет не установлен ли уже гем. Если не установлен, то гем выбирается из кеша, если он там присутствует, иначе - выкачивается из инета. В любом случае проверяется формат гемов (подходит ли на данную платформу) через инет (можно отключить опцией --local).

bundle install --deployment - устанавливает зависимости на продакшн сервер. Нельзя использовать на машине разработчика, т.к. возникнут проблемы при изменении Gemfile. Флаг --deployment должен удовлетворять ряду соглашений:

  1. инсталлирует гемы в vendor/bundle
  2. требует up-to-date Gemfile.lock
  3. если был запущен bundle package, то будет выбирать пакеты из vedor/cache
UPD: у себя при развертывании на продакшн отказались от ключа --deployment, т.к. приходится каждый раз производить инсталляцию в папку vendor/bundle. А это достаточно затратно по времени (в нашем случае 8 мин). На сервере может находиться только один проект, поэтому ничего страшного не произойдет при инсталляции гемов в систему.


bundle update - обновляет зависимости и Gemfile.lock

bundle package - фиксирует гемы в vendor/cache

Стандартный workflow:
  • создаем Gemfile, выполняем установку гемов bundle install
  • добавляем Gemfile и полученный Gemfile.lock в систему контроля версий
  • при работе на другой машине разработчика выкачаем рабочую копию репа и просто выполняем bundle install
  • при развертывании выполняем bundle install
  • после изменения Gemfile для получения новых зависимостей выполняем bundle install (обновится Gemfile.lock и кеш). Необходимо убедиться, что Gemfile.lock сохраниться в 
  • для обновления ВСЕХ гемов можно выполнить bundle update


понедельник, 10 июня 2013 г.

unoconv UnoException Unsupported URL

Утилита unoconv испускает исключение UnoException: Unsupported URL в том случае, если в процессах завис процесс soffice (/usr/lib/libreoffice/program/soffice.bin -headless -invisible -nocrashreport -nodefault -nofirststartwizard -nologo -norestore -accept=socket,host=localhost,port=2002;urp;StarOffice.ComponentContext)

пятница, 7 июня 2013 г.

Подключение Ubuntu в домен windows (Active Directory)

Очень удобный пакет likewise-open.

Сервис Windows slave не запускается автоматическиr на jenkins

Для winxp (с другими не наблюдалось) характерна проблема при использовании в качестве сервиса jenkins-slave. Периодически не производился запуск машины из веб-оболочки jenkins. При ручной загрузке винды и попытке запустить сервис jenkins, выдавалось сообщение "Служба ... была запущена и затем выключена, т.к. ничего не делает". Решение найдено на странице тут. Нужно просто очистить журнал событий (Панель управления-Администрирование-Просмотр событий)