Supongamos que tiene un sitio web escrito en Ruby on Rails. ¿Cómo pasarías a las aplicaciones de Android e iOS?

Primero, deberá escribir su servidor. Rails 5 ha agregado un modo -api, que es exactamente lo que estás buscando. Configura su aplicación sin vistas (habilita cors, etc.), y desde allí es fácil construir puntos finales que respondan con: json en lugar de HTML. Cada aplicación nativa consumirá esta API RESTful. La parte más difícil probablemente será la autenticación, porque ahora tendrá que acceder a soluciones de autenticación de origen cruzado basadas en tokens. Si desea mantener su sitio web de Rails existente, deberá agregar formatos de respuesta JSON a muchos de sus controladores y habilitar el intercambio de recursos de origen cruzado.

Ese es tu backend. Su interfaz tiene más opciones y será muy diferente del sitio web. Ahora, el frontend estará separado del backend, tendrá dos aplicaciones del lado del cliente en lugar de vistas renderizadas del lado del servidor, que consumen sus puntos finales API Rails. Para hacer esta aplicación, puede aprender la pila de cada plataforma (Java para Android, Swift y Objective-C para iOS) y construir cada aplicación por separado, o puede hacer una aplicación híbrida. Recomiendo encarecidamente crear una aplicación híbrida: una aplicación creada con tecnologías web (HTML, JS, CSS) que se convierte en una aplicación nativa para cada plataforma. Una base de código, dos sistemas operativos móviles. Con buena pinta. Hay muchas opciones: si conoce Angular (2!) O React, puede usar Ionic y React Native para crear las aplicaciones. Si no lo hace, sugeriría aprenderlos, o elegir otra solución independiente del marco.

Sin embargo, hay otra opción: puede usar turbolinks-ios y turbolinks-android para reutilizar sus vistas del lado del servidor como aplicaciones nativas. Esto me sorprendió, pero DHH dijo que Basecamp usa esta pila para sus aplicaciones nativas, ¡todo es un monolito majestuoso! Creo que esto es un salvavidas, y no puedo esperar para probarlo …

Bueno, eso es todo. ¡Buena suerte!

Exponga un servicio web en su servidor de aplicaciones y luego cree un cliente móvil Android / iOS