I socket Web sono di gran lunga il modo più efficiente per gestire le funzionalità di chat. Come framework, Rails non è molto bravo nel gestire eventi asincroni e quindi stabilire una connessione socket a un'applicazione Rails è quasi impossibile. Esistono molte soluzioni progettate per gestire questo tipo di problema. Come diceva Andrew, i framework come Node.js con Socket.IO sarebbero sufficienti, oppure, se si vuole rimanere con Ruby, Cramp , async_sinatra o Goliath framework sono tutte ottime soluzioni ma sarebbe super fantastico continuare.
Se si desidera utilizzare Rails per la logica dell'applicazione e avere anche i vantaggi di una sorta di gestione degli eventi asincrona con pubblicazione e sottoscrizione, sarà necessario utilizzare qualcosa come Private Pub Gem che è costruito su Faye e rende semplice la pubblicazione e l'iscrizione agli eventi in tempo reale in un'app Rails.
Ho provato a mettere insieme un'applicazione per chat di messaggi istantanei simile a Gmail in un'app per rails 4. Dai un'occhiata a questo tutorial . Spero che aiuti a far luce sullo stesso.