2010-01-16 35 views
25

Estoy confundido acerca de Sinatra (el marco de Ruby).¿Para qué usa Sinatra?

¿Es un reemplazo ligero de los rieles o puede tenerlos funcionando uno al lado del otro?

¿Se puede hacer una aplicación web (como en Rails)? Por ejemplo, un clon de Twitter?

Respuesta

60

Sinatra is not Rails. Se trata de un microarmazón utilizado para sitios web simples en los que es posible que solo necesite definir algunas acciones. Puede hacer que una aplicación Sinatra sea tan compleja como desee, pero llegará a un punto en el que su código se ha convertido en un desastre loco antes que en que con Rails.

Si bien no es 100% exacto, Sinatra se adapta principalmente al patrón arquitectónico Page Controller, y Rails es una implementación clara de MVC.

para responder a sus preguntas específicas:

  • Es no destinado a sustituir los carriles
  • Se puede lado ejecución por parte
  • Usted podría crear un clon de Twitter en Sinatra
5

Tome mi respuesta con un poco de grano de sal (porque en realidad no implementé una aplicación de sinatra), pero el "punto ideal" de sinatra son las microaplicaciones: pequeñas aplicaciones pequeñas donde un marco MVC completo sería excesivo Con Sinatra, puedes construir una aplicación web completa con un solo archivo de código.

Un ejemplo de una "micro aplicación" es rubular (tenga en cuenta, sin embargo, que no tengo idea de en qué marco está escrito). Rubular hace una cosa, y una muy bien. Usar rieles sería excesivo.

+0

Curiosamente, rubular tiene un backend Rails. http://builtwith.com/rubular.com – Rishi

15

Actualmente estamos usando Sinatra para un proyecto de producción (no implementado en vivo todavía, aún en desarrollo).

Básicamente está envolviendo una base de datos utilizada por una aplicación heredada y exponiendo los servicios web REST a otras aplicaciones internamente para que puedan interactuar con la aplicación heredada sin tener que acceder directamente a la base de datos.

Carriles fue considerado, pero no se utilizan debido a que:

  • Sin capa de vista (esencialmente vistas son sólo JSON/XML respuestas REST) ​​
  • modelo se implementa utilizando Sequel (ActiveRecord chupa tratar con DBs heredadas con peculiar , estructuras no estándar, pero Sequel es bastante agradable para esto)
  • Controller y capa de enrutamiento es bastante simple (aunque hay alguna lógica de negocio complejo implementado en Ruby copia de ella)

Teniendo en cuenta estos requisitos, Rails es utilizable, pero excesivo, mientras que Sinatra da en el blanco.

1

Utilizamos Sinatra para http://tweetarium.com al igual que el uso de madlep, la mayoría del sitio es solo llamadas AJAX, por lo que las vistas son muy simples.

No utilizamos un ORM, simplemente serialización JSON de la API de Twitter y el almacenamiento en caché en TokyoCabinet

Personalmente pienso Sinatra es un excelente complemento para las API. Cada versión podría ser una aplicación Sinatra diferente montada en un punto final diferente y puedes ejecutarla dentro de tu aplicación Rails.

+0

A juzgar por el hecho de que el sitio está caído, diría que no fue tan bien :) – Mehran

+0

@Mehran y luego Twitter lanzó listas de Twitter que hacían que la herramienta fuera menos útil, así que ciérrelo, pero para las API más simples eche un vistazo a la uva ahora. – MatthewFord