2009-04-09 6 views

Antwort

7

Sinatra ist ein viel kleineres, leichteres Gerüst als Rails. Es wird verwendet, wenn Sie schnell etwas auf den Weg bringen möchten, das nur aus ein paar URLs versendet und einfachen Inhalt zurückgibt. Werfen Sie einen Blick auf die Sinatra home page; Das ist alles, was Sie brauchen, um ein "Hello, World" zum Laufen zu bringen, während Sie in Rails eine ganze Projektstruktur erzeugen, einen Controller und eine Ansicht einrichten, Routing einrichten müssten, und so weiter (ich nicht Ich habe eine Rails-App schon eine Weile geschrieben, also weiß ich nicht genau, wie viele Schritte "Hello, World" ist, aber es ist sicherlich mehr als Sinatra. Sinatra hat weit weniger Abhängigkeiten als Rails, daher ist es einfacher zu installieren und zu betreiben.

Wir verwenden Sinatra als einen schnellen Test-Webserver für einige Web-Client-Bibliotheken, die wir jetzt schreiben. Die Tatsache, dass wir eine einzige Datei schreiben und unsere gesamte Logik in diese eine Datei einbeziehen können und nur wenige Abhängigkeiten aufweisen, bedeutet, dass es viel einfacher ist, mit unseren Tests zu arbeiten und sie auszuführen, als wenn Sie eine Rails-App hätten.

Merb is being merged into Rails, so ziemlich bald sollte es wirklich keinen Grund geben, einen über den anderen zu verwenden. Es wurde ursprünglich entwickelt, um ein bisschen leichter und entkoppelter als Rails zu sein; Rails hatte mehr eingebaute Annahmen, dass Sie ActiveRecord verwenden würden. Aber während sie die beiden zusammenführen, entkoppeln sie Rails auf ähnliche Weise. Wenn Sie also bereits Rails lernen, lohnt es sich, einfach dabei zu bleiben und den Entwicklungen zu folgen, wie sie kommen.

+0

@Brian - Vielen Dank. Genau das wollte ich herausfinden. – tundal45

2

Ich kann nicht viel für Merb sprechen, aber Sinatra ist sehr effektiv für kleine oder leichte Lösungen. Wenn Sie nicht mit sehr viel Code arbeiten oder keine riesige Website benötigen, können Sie eine sehr effektive Site mit Sinatra entweder so schnell oder doppelt so schnell programmieren wie auf Rails (meiner eigenen Meinung nach).

Sinatra eignet sich auch hervorragend für fragmentarische Teile einer Anwendung, z. B. das Frontend zu einem Statistikpaket. Oder etwas wie ErrCount, das ist nur ein wirklich einfacher Hit-Counter.

Denken Sie also bei der Verwendung von Sinatra an leichte, schnelle und sehr einfache Webanwendungen (obwohl die Komplexität Ihrer Wahl ist).

+0

Vielen Dank für das Hinzufügen dieses Details. Ich kann jetzt sehen, wo Sinatra in meine Coding-Eskapaden passt. – tundal45

1

Wie die Dinge laufen, wird es bald eine strittige Frage sein.

Wie bereits erwähnt, werden Merb 2.0 und Rails 3.0 die gleiche Sache sein. Die neu zusammengesetzten Merb und Rails-Kernteams arbeiten bereits daran, dies zu erreichen. Ich weiß nicht, ob sie im Mai noch eine Veröffentlichung (wahrscheinlich eine Beta) von RailsConf planen, aber dieses Jahr wird es definitiv passieren.

Wenn Sie beispielsweise ein anderes ORM als ActiveRecord verwenden möchten, können Sie jetzt mit Merb beginnen und aktualisieren, wenn 2.0 (Rails 3.0) geliefert wird. Momentan wird Merb allgemein akzeptiert, um einen besseren Rahmen für das Variieren von Komponenten als Rails bereitzustellen.

Sinatra sieht wie eine brillante Lösung für eine Web-App aus, die eine niedrige Schnittstellenkomplexität und etwas niedrigeren Code auf Modellebene aufweist, als dies für Merb/Rails normal wäre. Einfache RESTful-APIs zu implementieren, wäre ein großer Nutzen. Ich bin weniger überzeugt von seinem Wert, wenn eine Menge HTML beteiligt ist, noch weniger, wenn das Templating involviert ist.

Auch wenn Rails (und damit auch Merb bald) oben auf Rack sitzt, gibt es keinen Grund, Baby-Sinatra-Apps nicht in die Lösung aufzunehmen: Sie können zusammen leben.Es gibt a blog post that discusses that very concept

Verwandte Themen