-
Возращаемые значения rescue/ensure в Ruby
Иногда бывают такие дни, когда хочется просто поэксперементировать с нестандартным кодом на языке программирования, которым зарабатываешь на хлеб. Сегодня я бы хотел поделиться некоторыми ньюансами и неочевидными поведениями
rescue
иensure
конструкций Ruby. Напомню, что в Ruby результат последнего выражения внутри метода илиbegin/end
блока возвращается неявно, и это считается хорошей практикой. Однако, можно и явно указыватьreturn
и возвращать результат, например, досрочно. Это играет определенную роль в поведенииrescue
иensure
, поэтому я буду отдельно проверять поведение при явном и неявном возврате результата. -
Скриншот окна в macOS High Sierra
Хозяйкам на заметку. MacOS имеет встроенные инструменты для снятия скриншотов, что очень удобно в рамках базовой поставки ОС ^_^ Чего я не знал, так это то, что можно делать снимок отдельно взятого окна с помощью последовательности:
-
Трассировка переменных capistrano
В capistrano3 можно устанваливать (
set
) и извлекать (fetch
) переменные в процессе деплоя. При этом есть специальная переменная:print_config_variables
, которая включает режим трассировки переменных. -
Образ диска хоста Docker for Mac
В Docker for Mac 17.12.0-ce-mac46 таки кое-что сделали, чтобы производительность работы Docker на базе стандартной файловой системы APFS в macOS High Sierra была лучше. Ранее при рассмотрении OSXFS я писал о проблемах возникающих при монтировании больших томов и как эти проблемы решаются на разных уровнях (параметры монтирования или docker-sync). Теперь разработчики Docker предлагают перейти от формата хранения дискового образа (disk image) Docker хоста qcow2 к raw (сырому). Qcow2 (QEMU Copy-On-Write) образ диска удобен для использования маленьких образов в формате файловых систем не поддерживаемых операционной системой. Docker хранит всю информацию об образах и контейнерах в отдельном образе дикска, который монтируется внутрь VM. После обновления и удаления всех старых образов и контейнеров Docker автоматически начнет использовать raw формат. Данное изменение предполагает, что производительность работы с диском будет увеличена практически в 2 раза. Сам образ хранится по следующему пути
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux
и называетсяDocker.raw
вместоDocker.qcow2
. Этот же путь и размер файла образа диска можно увидеть в настройках Docker.app: -
ServerEngine
В текущем проекте я использую sneakers в качестве основного фреймворка обработки RabbitMQ сообщений. Коротко говоря, Sneakers создает набор подтребителей (consumers) сообщений посредством bunny (который является де-факто стандартным клиентом RabbitMQ в мире Ruby) с помощью декларативной конфигурации. Я наверняка расскажу, как устроен Bunny изнутри позже, а сейчас я бы хотел обратить внимание на другую важную зависимость Sneakers – фреймворк для построения мультипроцессных серверов serverengine. Фактически это такая приблуда, которая позволяет запускать демон-сервер в различных режимах – простой, многопроцессный, многопоточный. Из коробки доступны попутно логгирование, обработка сигналов, возможность изменять имя процесса, динамическая перезагрузка конфигурации.