Not sure about ruby, but most of the languages I know about, C#, javascript, php, etc don't need virtualenv because they install packages in a project locally (and globally if required). so envs of one project do not clash with another.
while python install packages globally and only globally. so a virtualenv is needed to isolate different projects from one another