Estoy aprendiendo Rails y tengo muy poca idea sobre Sinatra & Merb. Me preguntaba cuáles serían las situaciones en las que utilizarías Merb/Sinatra.¿Cuáles son los escenarios en los que se utilizaría Sinatra o Merb?
¡Gracias por sus comentarios!
Estoy aprendiendo Rails y tengo muy poca idea sobre Sinatra & Merb. Me preguntaba cuáles serían las situaciones en las que utilizarías Merb/Sinatra.¿Cuáles son los escenarios en los que se utilizaría Sinatra o Merb?
¡Gracias por sus comentarios!
Sinatra es un armazón mucho más pequeño y liviano que Rails. Se usa si desea que algo se ejecute rápidamente y que se despache de algunas URL y devuelva contenido simple. Eche un vistazo al Sinatra home page; eso es todo lo que necesitas para poner en marcha un "Hello, World", mientras que en Rails necesitarías generar una estructura de proyecto completa, configurar un controlador y una vista, configurar el enrutamiento, etc. (no tengo escribí una aplicación de Rails por un tiempo, así que no sé exactamente cuántos pasos es "Hello, World", pero es ciertamente más que Sinatra). Sinatra también tiene muchas menos dependencias que Rails, por lo que es más fácil de instalar y ejecutar.
Estamos utilizando Sinatra como un servidor web de prueba rápida para algunas bibliotecas de clientes web que estamos escribiendo ahora. El hecho de que podamos escribir un solo archivo e incluir toda nuestra lógica en ese único archivo, y tener muy pocas dependencias, significa que es mucho más fácil trabajar y ejecutar nuestras pruebas que si tuviera una aplicación de Rails.
Merb is being merged into Rails, así que muy pronto no debería haber ninguna razón para usar una sobre la otra. Originalmente fue diseñado para ser un poco más ligero y más desacoplado que Rails; Rails tenía más suposiciones de que usaría ActiveRecord. Pero como están fusionando los dos, están desacoplando Rails de manera similar, por lo que si ya estás aprendiendo Rails, entonces probablemente valga la pena seguir con eso y seguir los desarrollos a medida que se presenten.
No puedo hablar mucho sobre Merb, pero Sinatra es muy efectivo para soluciones pequeñas o livianas. Si no está trabajando con una gran cantidad de código, o no necesita un gran sitio web, puede codificar un sitio muy eficaz con Sinatra, ya sea tan rápido o el doble de rápido que en Rails (en mi opinión).
Sinatra también es excelente para piezas fragmentarias de una aplicación, por ejemplo, el front-end de un paquete de estadísticas. O algo así como ErrCount, que es solo un contador de visitas realmente simple.
Así que piense en aplicaciones web ligeras, rápidas y altamente simplistas (aunque la complejidad es su elección) cuando utilice Sinatra.
Muchas gracias por agregar ese detalle. Ahora puedo ver dónde puede encajar Sinatra en mis escapadas de codificación. – tundal45
La forma en que van las cosas, va a ser una cuestión discutible pronto.
Como se mencionó anteriormente, Merb 2.0 y Rails 3.0 van a ser lo mismo. Los equipos centrales combinados recientemente de Merb and Rails ya están trabajando para lograrlo. No sé si aún planean un lanzamiento (probablemente una versión beta) de RailsConf en mayo, pero definitivamente está sucediendo este año.
Si está completamente configurado para usar un ORM que no sea ActiveRecord, por ejemplo, puede comenzar con Merb ahora y actualizar cuando se envíe 2.0 (Rails 3.0). En este momento, generalmente se acepta que Merb proporcione un mejor marco para variar los componentes de uno que Rails.
Sinatra parece una solución brillante para una aplicación web que tiene una complejidad de interfaz baja y un código de modelo a un nivel algo inferior al que sería normal para Merb/Rails. Implementar API RESTful directas sería un gran uso. Estoy menos convencido de su valor cuando se trata de cualquier cantidad de HTML, incluso menos cuando se trata de la creación de plantillas.
Una vez más, con Rails (y por lo tanto Merb pronto) ahora sentado en la parte superior de Rack, no hay razón para no incluir aplicaciones bebé Sinatra en la solución: pueden vivir juntos.Hay a blog post that discusses that very concept
@Brian - Muchas gracias. Eso fue exactamente lo que quería averiguar. – tundal45