Я бы предложил не делать это в самом Rails, а делать это прямо в вашем веб-сервере (например, Apache)
Я работал над большим проектом по переносу веб-сайта Java на Ruby и для этого использовал Apache mod_rewrite и mod_proxy.
Так что поток был
user -> browser -> apache -> passenger or Tomcat
Использование модулей внутри самого Apache означало, что нам не нужно было использовать какой-либо стек Rails (и связанные с ним ЦП / память / потоки). Это также позволило нам выполнить одно из ваших требований, чтобы гарантировать, что «пользователь никогда не станет мудрее оригинального приложения»
Управление сессиями - единственная сложная часть этого процесса; Я ввел cookie, которые Java-приложение и приложение Rails могли одновременно читать, и использовал их наличие, чтобы сообщить Ruby или Java, если пользователь вошел в систему. Таким образом, Ruby и Java не нужно было пытаться управлять сеансами друг друга.
Надеюсь, что-нибудь из этого окажется полезным?