2010-01-16 11 views
25

Ich bin verwirrt über Sinatra (der Rubin Rahmen).Wofür verwenden Sie Sinatra?

Ist es ein leichter Schienenersatz oder können Sie sie nebeneinander laufen lassen?

Können Sie eine Webanwendung (wie in Rails) erstellen? Zum Beispiel ein Twitter-Klon?

Antwort

60

Sinatra ist nicht Rails. Es ist ein Mikro-Framework, das für einfache Websites verwendet wird, in denen Sie möglicherweise nur einige Aktionen definieren müssen. Sie können eine Sinatra-Anwendung so komplex machen, wie Sie möchten, aber Sie werden einen Punkt treffen, wo Sie einen verrückten Durcheinander früher als mit Rails geworden sind.

Obwohl nicht 100% genau, passt Sinatra meist in das Page Controller Architekturmuster, und Rails ist eine klare MVC Implementierung.

Um Ihre Fragen gezielt zu beantworten:

  • Es ist nicht bestimmt Rails ersetzen
  • Es kann laufen nebeneinander
  • Sie könnte ein Twitter-Klon in Sinatra erstellen
5

Nehmen Sie meine Antwort mit ein bisschen Körnchen (weil ich noch keine Sinatra-Anwendung installiert habe), aber Sinatras "Sweet Spot" sind Mikro-Apps: winzige Anwendungen, bei denen ein vollständiges MVC-Framework wäre Overkill. Mit Sinatra können Sie eine komplette Web-App mit einer einzigen Code-Datei erstellen.

Ein Beispiel für eine "Mikro-App" ist rubular (beachten Sie jedoch, dass ich keine Ahnung habe, in welchem ​​Framework es geschrieben ist). Rubular macht eine Sache und eine Sache sehr gut. Schienen zu verwenden wäre zu viel.

+0

Interessanterweise hat Rubular ein Rails-Backend. http://builtwith.com/rubular.com – Rishi

15

Wir verwenden derzeit Sinatra für ein Produktionsprojekt (noch nicht live im Einsatz, noch im Entwickler).

Im Grunde ist es eine Datenbank, die von einer Legacy-App verwendet wird, und stellt REST-Webdienste intern anderen Apps zur Verfügung, damit sie mit der Legacy-App interagieren können, ohne direkt auf die Datenbank zugreifen zu müssen.

Rails wurde in Betracht gezogen, aber nicht verwendet, weil:

  • keine Aussicht Schicht (im Wesentlichen Ansichten sind nur JSON/XML REST Antworten)
  • Modell implementiert ist Sequel (Active kotzt mit skurriler mit Legacy-DBs zu tun , nicht-Standard-Strukturen, aber Sequel ist ganz nett für diese)
  • -Controller und Routing-Schicht ist ganz einfach (obwohl es einige komplexe Geschäftslogik in Ruby Sichern sie implementiert ist)

Angesichts dieser Anforderungen ist Rails verwendbar, aber Overkill, wo Sinatra gut auf den Punkt trifft.

1

Wir verwendeten Sinatra für http://tweetarium.com sehr ähnlich wie Usecase von Madlep die Mehrheit der Website ist nur AJAX Anrufe, so dass die Ansichten sehr einfach sind.

Wir verwenden keine ORM, nur um die JSON aus dem Twitter-API-Serialisierung und das Caching es in TokyoCabinet

Ich persönlich denke, Sinatra ist eine ausgezeichnete Passform für APIs. Jede Version kann eine andere Sinatra-App sein, die an einem anderen Endpunkt installiert ist, und Sie können sie in Ihrer Rails-App ausführen.

+0

Nach der Tatsache zu urteilen, dass die Seite unten ist, würde ich sagen, dass es nicht so gut ging :) – Mehran

+0

@Mehran gut zwitschern später veröffentlichten Twitter-Listen, die das Werkzeug weniger nützlich, so dass wir gemacht schalte es aus, aber für einfache APIs würde ich mir jetzt Traube ansehen. – MatthewFord