Pretty vintage setup you got there!
It really depends very much on the size of the app and the test coverage.. You always have to evaluate what is more sensible or time consume... e.g. to write new tests in some old library, or to do testing manually... to migrate or to rewrite, etc. But here are some good practices:
- Migrate step by step on your development environment
- Isolate every framework, ruby, gem change if possible, and test whole app afterwards
- If you don't have any tests you will have to do the testing manually which is fragile to say the least... or in some cases you can write new tests (but that is time-consuming)
- Once you have the app running and fully tested on your development environment, you can deploy/migrate to the new server
I hope this helps to some extent.