Я не сторонник лишних gems. Если необходим какой-либо несистемный функционал (например, state machine), то вместо того, чтобы тянуть в проект какую-то стороннюю OpenSource либу (которая вместе с нужным функционалом добавляет ненужный потайной функционал "магического характера"), я лучше потрачу тоже самое время на разработку собственной библиотеки, которая может уместиться в 1-3 класса, чем разбираться в коде и в случае багов выяснять, где проблема: "у нас или у них там в геме?". Либо выдеру из гема нужный мне код без лишнего.
Ответ на вопрос:
- rspec
- composite_primary_keys
- omniauth (omniauth-instagram, omniauth-vkontakte, omniauth-google-oauth2)