Sinatra ist ein freies Webframework und eine in Ruby geschriebene domänenspezifische Sprache. Es ist eine Alternative zu anderen Ruby-Frameworks wie Ruby on Rails, Nitro, Camping und Rango. Sinatra setzt das Rack-Webserver-Interface voraus.
Sinatra wurde von Blake Mizerany entworfen und entwickelt und soll kompakt und flexibel sein. Es folgt nicht dem MVC-Muster, das in anderen Frameworks, wie zum Beispiel Ruby on Rails, zur Anwendung kommt. Stattdessen strebt Sinatra an, Webapplikationen schnell und mit minimalem Aufwand entwickeln zu können.
Einige bedeutende Firmen verwenden Sinatra, zum Beispiel Apple, die BBC, LinkedIn, Engine Yard, Heroku, GitHub und Songbird. Heroku stellt einen großen Teil der Finanzierung von Sinatra zur Verfügung.
Sinatra wurde 2007 erstellt und unter eine Open-Source-Lizenz gestellt. __TOC__
Beispiele
Beispiel 1: eine Webapp in einer Datei Eine Hallo-Welt Webapplikation kann beispielsweise so aussehen: #!/usr/bin/env ruby require 'sinatra'
get '/' do redirect to('/hello/World') end
get '/hello/:name' do "Hello #{params[:name]}!" endGestartet wird ein solches Programm mit: $ ruby test.rbÖffnet man im Browser:http://localhost:4567 Kann man die Ausgabe Hello World! im Browser-Fenster sehen. Ruft man hingegen die URLhttp://localhost:4567/hello/Ada auf, so kann man die Ausgabe Hello Ada! im Browser-Fenster sehen.
Beispiel 2: HTML-Code in der Webapp
Es ist möglich, HTML-Code mit ERuby (erb) in den Quellcode einzubauen:
#!/usr/bin/env ruby require 'sinatra'
get '/' do erb :main end
__END__ @@main <!doctype html> <html lang="en"> <head> <title>Welcome page</title> <meta charset="utf-8"> </head> <body> <header> <h1>Welcome World!</h1> </header> <p>Welcome to this Website! </p> </body> </html>
Von Sinatra beeinflusste Frameworks
Sinatra hat etliche Microframeworks in Ruby und anderen Programmiersprachen inspiriert. Normalerweise versuchen solche Frameworks, die domänenspezifische Sprache (DSL) von Sinatra möglichst gut nachzubilden.
Ruby: Almost Sinatra,Almost Sinatra Astaire,Astaire Cuba,Cuba Padrino (basierend auf Sinatra),Padrino Pakyow,Pakyow ReneeRenee PHP: Fat-Free,Fat-Free Fitzgerald,Fitzgerald Glue, klein,klein Laravel,Laravel Limonade,Limonade MiMViC, Silex, SlimSlim JavaScript: Express,Express Picard,Picard Roundabout,Roundabout SammySammy CoffeeScript: ZappaZappa Python: Bottle, Denied (was an April Fools jokeArmin Ronacher: April 1st Post Mortem), Flask,Flask itty,itty JunoJuno Erlang (Programmiersprache): Fresh,Fresh SpookySpooky Groovy: Graffiti,Graffiti RatpackRatpack Scala: Scalatra,Scalatra BlueEyesBlueEyes .NET: Martin,Martin Nancy,Nancy NinaNina Perl: Dancer, MojoliciousMojolicious::Lite Java: Spark,Spark Napalm, HtmleasyHtmleasy Haskell: Bird,Bird Loli Fancy: Sinatra.fySinatra.fy Bash: Astley,Astley sh.inatrash.inatra C: BogartBogart F#: Frank Lua: Mercury,Mercury OrbitOrbit Mirah: ShatnerShatner Objective-C: RCRouterRCRouter Vala: ValatraValatra Nim: JesterJester
Im Juli 2011 diskreditierte ein Individuum oder eine Gruppe, die sich als Mitglieder des Sinatra-Teams ausgaben, das Dancer-Projekt. Dieser Vorfall hat dazu geführt, dass das Sinatrateam öffentlich das Dancer-Projekt und andere Nachbauten guthieß."Sinatra Loves Dancer"
Literatur Alan Harris, Konstantin Haase: Sinatra: Up And Running (First ed.). O’Reilly Media, 2012, ISBN 978-1-4493-0423-2, S. 120.
Weblinks Sinatra Website auf sinatrarb.com Sinatra’s GitHub repository auf github.com Video of Blake Mizerany and Adam Wiggins. auf rubyconf2008.confreaks.com
Einzelnachweise
Kategorie:Ruby (Programmiersprache) Kategorie:Freies Webframework Kategorie:Freie Server-Software