exception_notification для мониторинга ошибок

Иногда ошибки возникают в production среде. Их не очень просто отловить даже если ошибка возникла из-за непосредственно ваших действий — нужно лезть в логи.

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

Чтобы быть в курсе дел можно использовать трекеры ошибок, например Airbrake и его opensource альтернативу Errbit.

Но в случае если приложение простое, например этот блог, можно ограничиться отправлением ошибок на почту при помощи exception_notification.

Вам автоматически будут приходить уведомления на почту, когда что-нибудь сломается:

Для четвёртых Рельс подключается так:

Gemfile #

gem 'exception_notification'

config/environments/production.rb #

В блок config добавить ваши настройки:

config.middleware.use ExceptionNotification::Rack,
    email: {
    email_prefix: "[dobroserver][error] ",
    sender_address: "server@domain.tld",
    exception_recipients: "admin@domain.tld",
    email_format: :html
  }

That's all folks!

Лазерная коррекция зрения

Восьмого октября я сделал лазерную коррекцию зрения.

Я вижу отражение информационного табло, находящегося сзади меня, в проезжающих мимо автобусах. И даже могу его считать.

Окей, если мне надоест писать на Руби, я и мой славный карабин почистим Гудзон от команчей.

Предварительная проверка #

Помимо прочих условий есть два обязательных — зрение не должно изменяться и толщина роговицы должна быть достаточной.

Если размер глазного яблока меняется — то операция лишена смысла, потом потребуется делать ещё одну докоррекцию, если это будет возможно. Это причина по которой лазерную коррекцию не делают до 18, организм активно растёт.

Если роговица слишком тонкая, то 100% зрение маловероятно и могут возникнуть осложнения.

Первый этап: обследовать глаза там где предполагаете делать лазерную коррекцию. И сделать это ещё несколько раз за полгода, чтобы убедиться что показатели статичны и благоприятны.

Движок блога обновлён до четвёртых Рельс

GitHub #

https://github.com/ksevelyar/dobroserver

Что нового? #

  • Глобальные переменные вынесены в config.yml.
  • Соблюдение инкапсуляции.
  • Тотальный DRY.
  • Покрытие тестами 95%.
  • Сapistrano 3.
  • Для парсинга markdown разметки теперь используется Redcarpet.
  • Оптимизация базы данных (запросы, индексы, структура).
  • Обновлены стили для формы редактора.
  • Для моделей Page и Post используется Single Table Inheritance.
  • Лицензия MIT.
  • Чистка от мусора.

И множество мелких исправлений.
Теперь у меня будет больше времени писать в сам блог, чем в его код.

Глобальные переменные в Rails

При разработке возникает вопрос хранения глобальных переменных:

  • токены для сторонних сервисов
  • почта куда будут приходить уведомления
  • url сайта для майлеров
  • ключ для шифрования cookies

И всё в том же духе.

Есть две причины вытащить все эти вещи в отдельный файл — удобство редактирования настрок и удобство исключения всего одного файла из репозитория (из соображений безопасности).

Параметры по умолчанию для rails new

Обычно я пишу примерно такую команду, чтобы создать приложение:

rails new solar_system --skip-test-unit --skip-bundle -d postgresql

Чтобы не указывать эти флаги каждый раз, можно создать .railsrc:

echo "--skip-bundle
--skip-test-unit
--database=postgresql" > ~/.railsrc

Поиск пакета по команде

Устанавливаем утилиту:

pacman -S pkgfile

Обновляем базу:

sudo pkgfile --update

Ищем пакет содержащий команду cgdisk:

pkgfile cgdisk 

Результат:

extra/gptfdisk

html2rss — flick

Очень простенькое веб-приложение, которое генерирует atom ленту о выходящих в московский прокат фильмах. Чтобы не пропустить возвращение The Big Lebowski, например.

http://flick.dobroserver.ru/

  1. С помощью nokogiri строим массив хешей с фильмами (при этом берём только фильмы с рейтином >= 7).
  2. Отправляем на покой полученные раньше фильмы (если фильма нет в последнем массиве, то кинотеатры он покинул).
  3. Создаём новые фильмы и выводим в atom ленту / index.

Всё это дело происходит в rake таске, который каждый час запускает whenever.

Можно использовать для получения rss из любого другого html.

Если мне понравится ходить по кинотеатрам — всё будет намертво закешировано и покрыто тестами. И возможно на более легковесном фреймворке.

Стримим видео с сервера по Wi-Fi

Итак у вас есть домашний сервер и несколько разных устройств — настольный компьютер, ноутбук, телевизор, планшет, телефон.

Вы можете хранить всю необходимую информацию на сервере и воспроизводить на любом из этих устройств. Начать смотреть фильм на кухне с планшета и досмотреть его уже с телевизора в другой комнате.

Чтобы воспроизводить действительно тяжёлые файлы (10-20 G) просто примонтировать сервер через sshfs недостаточно, нужно использовать DLNA.