|
Hallo,
Ich möchte eine kleine Sinatra App über SSL erreichbar machen ohne einen extra proxy wie nginx. WEBrick lässt sich prinzipiell (so ziemlich als einziger) auch eigentlich ganz bequem dazu überreden. Die Frage ist nun, wie bringe ich Sinatra und webrick nun am besten zusammen?
Prinzipiell wäre wohl sowas denkbar:require 'webrick/https' require 'rack' require './app.rb'
Rack::Server.start( :app => Sinatra::Application, :server => "webrick", :Port => 8080, :SSLEnable => true, [mehr ssl-optionen] )
Laut Doku sollte das genau so gehen. In der Realität braucht er aber leider eine :config Datei. Erst mit einer zusätzlichen Zeile in Rack::Server tut er wieder wie versprochen und obiges läuft genau so.
Die Alternative ist wohl Rack::Handler::WEBrick.run zu verwenden. Das ist aber wohl eigentlich nicht dazu gedacht direkt genutzt zu werden und lässt sich u.a. auch nicht einfach per ^C beenden, so dass am Ende dann sowas rauskommt: Rack::Handler::WEBrick.run(Sinatra::Application, [mehr optionen] ){|s|Signal.trap(:INT) {s.shutdown}}
Direkt per rackup scheint es nicht möglich zu sein dem Webserver zusätzliche Optionen (fürs SSL) zu übergeben. Hab ich noch irgend was wichtiges übersehen?
Momentan favorisiere ich ja grad die erste Lösung, aber an "offiziellen" Bibliotheken manuell rumzuschrauben mach ich eigentlich auch immer nur mit schlechtem Gewissen. - Irgendwie hab ich das Gefühl irgend eine ganz simple/elegante Lösung vor lauter Bäumen nicht zu sehen...
Update: Hm, eine noch andere Möglichkeit wäre wohl direkt im Sinatra die run!-Methode aufzubohren und direkt dort die Optionen setzbar zu machen. - Läuft wohl doch auf einen Feature-Request hinaus...
|