so as RVM maintainer(I know what's inside):<p>What RVM does:
- RVM by default provides patches that will make your old ruby compile on your new system.
- RVM does not provide patches for anything else, so there will be no magically enabling/disabling code.
- in RVM you can specify ruby patchlevel and you will get exactly that ruby patchlevel
- when you specify or not patchlevlel for ruby RVM will respect it compiling/using respectively given patchlevel or latest one.<p>What your system does(will do at least one of those):
- bump ruby patchlevel because of security issues, but also possibly can include behavior changes
- backport fixes from newer patchlevel / version to the installed version
- will include code changes/patches they fill like are necessary for you - but are you ?<p>So the main difference:
RVM - will try to keep your ruby-patchlevel compiling for you, no other changes
System - will bump patchlevel or backport fixes to the build one.<p>Additionally in your system you can find maybe two - three provided ruby version, build by system maintainers, no possibility to define patches you would like to be include, RVM allows you to have as many rubies as you want (I have right now 37 different combinations of ruby/version/patchlevel/patches installed)<p>And last RVM will alllow you to use the same ruby-version-patchlevel-patches in development and in production, making sure you run the same exact behavior on across all your systems used for development and hosting.