2010-10-21 21 views
60

He trabajado con algunas de las muestras de Sinatra y Rails, pero me está costando averiguar qué características pertenecen a qué tecnología.Sinatra vs. Rails

¿Qué gano específicamente al usar Sinatra/Rails? ¿Es solo ActionPack/ActionView? Corrígeme si me equivoco, pero PODRÍA simplemente usar Webrick/Mongrel y servir mis archivos .erb ¿verdad? Y podría usar la tecnología ActiveRecord en esos archivos y seguir accediendo a variables de publicación, estado de sesión y variables de cadena de consulta ¿verdad?

Entonces, lo que les pregunto, chicos, es si empiezo con el escenario de PHP anterior; Webrick + ERB + ActiveRecord, ¿qué gano al usar Sinatra? ¿Y qué obtengo más utilizando Rails?

Respuesta

60

Para Sinatra, es casi como una envoltura alrededor de Rack. Entonces, primero debe preguntar cuál es el punto de Rack. Rack es básicamente una especificación de cómo un framework debe devolver un resultado, puede usar lo que se devuelve con cualquier servidor web compatible con Rack. Por lo tanto, es realmente una capa de compatibilidad que le permite elegir su combinación de marco/servidor a voluntad, sin preocuparse de si funcionarán conjuntamente. Si su marco es compatible con Rack, debería ser capaz de implementar prácticamente en cualquier servidor a través de Rack.

Ahora, el problema es que el rack es de muy bajo nivel. Los marcos como Sinatra te ofrecen cosas como buen enrutamiento, ayudantes, filtros antes/después y mucho más. Solo necesita mirar a los documentos para ver lo que puede obtener. Rails es mucho más funcional, y en muchos sentidos "mágico". Es decir, puedes escribir una sola línea en Rails que termine haciendo bastante, lo que para algunos es algo bueno, y para algunos también mágico. Personalmente prefiero Sinatra por esta razón, al menos antes de obtener una comprensión decente de los componentes internos de Rails.

+1

Gracias por la información. Aquí hay una pregunta de seguimiento: si no tuviera Rails o Sinatra, ¿cómo haría para usar Webrick para servir algunos archivos ERB? Supongo que es posible usar simplemente los comandos de ruby ​​para iniciar el webrick en un puerto determinado y apuntarlo a cierto directorio. – LoveMeSomeCode

+3

Acabo de buscar en Google para "webrick", tercer resultado: http://microjet.ath.cx/webrickguide/html/ - y también esto: http://segment7.net/projects/ruby/WEBrick/servlets.html – ehsanul

+1

I No veo por qué quieres molestarte con todo eso, aunque honestamente, parece bastante inútil, y Webrick no es exactamente el mejor servidor. Puede usar el enrutamiento de URL de Sinatra como una interfaz para ERB si eso es todo lo que realmente desea. Puede ignorar todas las otras características, o usarlas más tarde si lo desea. ¿Viste el mundo de hola para Sinatra? Súper simple (y las líneas de código no cambiarían si quisiera que hiciera referencia a un archivo ERB en lugar de solo la cadena): http: // http: //www.sinatrarb.com/ – ehsanul

5

La ganancia de Rails es ActionView/ActionPack. Pero puedes reemplazarlo por Mongrel/Erb. Es algo diferente.

Todo es herlper que tiene en su vista como nombre_ruta o gestión de errores en su formulario. Es todo gestión de recursos y todos los complementos como InheritedResources. La ventaja de Rails.

Hay algunas herramientas como el entorno Padrino para ayudarte a tener todo este ayudante. ¿Pero es realmente speeder después de que todo el complemento se active? No lo creo.

Con Rails 3, Rails es una aplicación Rack completa con una gran cantidad de RackMiddleware. Puedes dejar algo de middleware para aumentar tu respuesta.