Архив автора: gruz0

Дайджест материалов о Ruby #06 от 06.04.2016

Статьи о Ruby и Rails

Ruby Gems и инструменты

Хранение данных

Дайджест материалов о Ruby #05 от 26.02.2016

Паттерны:

Прочее:

Полезные гемы для Ruby:

Тестирование:

Автоматическая проверка приложения на уязвимости

Есть два отличных гема, один из которых выполняет проверку кода вашего приложения на известные уязвимости, а второй ищет уязвимые гемы и предлагает пути решения (обновление, конечно же). Первый гем brakeman, второй bundler-audit.

Коротенькая заметка как всё это установить и настроить.

Добавляем в Gemfile в группу development следующие строки:

group :development do
  gem 'brakeman', require: false
  gem 'bundler-audit', require: false
end

Выполняем в консоли:

bundle

Создаём в директории проекта файл .git/hooks/pre-commit следующего содержания:

#!/bin/sh

red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
NC='\033[0m'

# Security audits
bin/bundle exec brakeman --no-progress -z
if [ $? -ne 0 ]; then
  echo "${red}[Brakeman][Error]: Fix the issues and commit again${NC}"
  exit 1
fi

# Checks for vulnerable gems
bin/bundle exec bundle-audit update
bin/bundle exec bundle-audit -v
if [ $? -ne 0 ]; then
  echo "${red}[Bundle Audit][Error]: Update the gems and commit again${NC}"
  exit 1
fi

exit 0

Если файл pre-commit у вас отсутствует — просто копируйте и вставляйте приведённый выше код. Если же у вас уже имеются в нём свои наработки, тогда смело дёргайте строки с 8 по 21 и используйте их в своём файле.

Теперь на любой коммит будет запускаться сначала brakeman, проверяющий скрипты вашего приложения на уязвимости, а затем их bundle-audit, проверяющий дополнительно и установленные гемы на уязвимости. Пока найденные проблемы не будут устранены — вы не сможете отправить свои правки в репозиторий.

Можно, конечно, подключить всё это на guard, но мне кажется, что по каждому чиху запускать проверки не самая лучшая идея. Если вдруг вам всё-таки хочется это, то вот инструмент для этого: guard-brakeman.

Дайджест материалов о Ruby #04 от 12.08.2015

Ruby/Rails

Threads, Thread-safe code, GIL in Ruby:

Тестирование Ruby-кода

Press and Hold в RubyMine

Обновился до El Capitan и пропала одна из самых нужных мне настроек — при удержании кнопки повторять её сколько угодно раз. Попробуйте нажать кнопку «вверх» и удержать её, скорее всего у вас она просто один раз повторится и всё.

В общем, лечится очень просто в консоли:

defaults write com.jetbrains.rubymine ApplePressAndHoldEnabled -bool false

Спасибо/пожалуйста.

Дайджест материалов о Ruby #03 от 11.05.2015

Ruby

Ruby-новичкам (всё на английском)

Решение проблемы curl returned status 23

Ответ находится на StackOverflow: http://stackoverflow.com/a/26792798, но сохраню на всякий случай и себе, чтобы потом не искать, а вдруг удалят… 🙂

Проблема такого рода: когда пытаешься поставить Ruby через RVM на сервере с Linux (возможно и на других *nix аналогично) с уже установленным в system-wide окружении.

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

\curl -sSL https://get.rvm.io | bash -s stable

, выдаёт ошибку в консоль:

Downloading https://github.com/wayneeseguin/rvm/archive/stable.tar.gz
curl: (23) Failed writing body (0 != 867)

Could not download 'https://github.com/wayneeseguin/rvm/archive/stable.tar.gz'.
  curl returned status '23'.

Downloading https://bitbucket.org/mpapis/rvm/get/stable.tar.gz
curl: (23) Failed writing body (0 != 15926)

Could not download 'https://bitbucket.org/mpapis/rvm/get/stable.tar.gz'.
  curl returned status '23'.

Лечится просто

В файл ~/.bashrc самыми первыми строками добавляем:

unset rvm_path
unset GEM_HOME

И затем спокойно ставим RVM.

Дайджест материалов о Ruby #02 от 13.03.2015

Курсы по Ruby и Rails
Ruby

Дайджест материалов о Ruby #01

На работе регулярно публикую подобные обзоры, теперь буду и здесь хранить 🙂