Requires Ruby [ci skip]