2012-11-13 8 views
26

Normalerweise, wenn Sie rails server ausführen, startet Webrick. Wenn Sie den "dünnen" Edelstein installieren, wird stattdessen "dünn" gestartet. Ich würde das Gleiche mit dem 'Puma' Server tun.Wie bekomme ich 'Puma' automatisch zu starten, wenn ich 'Rails Server' (wie Thin tut)

Ich sehe, dass der start Befehl innerhalb von railties (lib/rails/commands) Superaufrufe, aber ich kann nicht finden, was die verschiedenen Optionen für 'Super' sind. Ich habe auch viele Hinweise auf Rails in "dünn" überprüft.

Ich fand einen Changelog-Eintrag mit dem Titel "Hinzugefügt Thin-Unterstützung für Skript/Server. # 488 [Bob Klosinski]" von Oktober 2008, aber dieser Code-Bereich hat sich seit diesem Commit signifikant geändert (a93ea88c0623b4f65af98c0eb55924c335bb3ac1).

Wenn jemand mich auf den richtigen Abschnitt des Codes verweisen könnte, wäre das sehr hilfreich.

Antwort

52

Nach einigem Graben, habe ich diese Antwort gefunden: https://stackoverflow.com/a/14911994/604526

auf den Standard macht Puma, fügen Sie diesen Code in Skript/Schienen erfordern oben 'Schienen/Befehle':

require 'rack/handler' 
Rack::Handler::WEBrick = Rack::Handler.get(:puma) 

Puma ist die Standard-Server jetzt, wenn Sie verwenden rails s

rails s 
=> Booting Puma 
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
Connecting to database specified by database.yml 
Puma 1.6.3 starting... 
* Min threads: 0, max threads: 16 
* Environment: development 
* Listening on tcp://0.0.0.0:3000 

Mit Rails 4 Sie müssen einfach das Puma-Juwel zum Gemfile hinzuzufügen. (Getestet mit Rails 4.0.2 und Puma 2.6.0)

+2

Dies sollte die akzeptierte Antwort sein –

+0

Das hat mir nicht funktioniert. Aber ich denke, das liegt daran, dass meine App dünn ist. – betomoretti

+0

Wie mache ich das Gegenteil? Ich möchte nicht, dass Puma standardmäßig in der Entwicklung geladen wird. – abhishek77in

2

Puma documentation schlägt vor, dass Sie #\ -s puma zu Ihrer config.ru voranstellen.

+0

Danke. Ich habe es versucht. Kein Glück. Immer noch "Booten WEBrick" oder "Booten Thin". Ich frage mich, ob das ein Rails Bug ist? –

+0

@MattScilipoti Es muss etwas mit Rack sein. Aber ich denke nicht, dass es ein Fehler ist, sondern nur einige Einstellungen. – RocketR

+0

Danke für 'config.ru' :) – Sairam

9

Das funktioniert für mich. Ruby 2.0.0 Rails 3.2.13 Puma 1.6.3

rails s puma 
+0

Das hat mich gebissen, weil ARGV [0] nicht leer ist. reload_libs lädt lib/tasks/* und ich nahm an, dass, wenn ARGV [0] gesetzt wurde, ich es als Befehl ausführen wollte. – pedz

16

Mindestens in Rails 4, brauchen Sie nur folgendes zu Ihrem Gemfile

gem 'puma' 

dann laufen 'Bündel', hinzufügen und dann Wenn Sie "rails server" ausführen, wird Puma verwendet.

+1

Das funktioniert. Nun, wenn ich nur herausfinden könnte, wie man config/puma.rb automatisch laden kann, wenn man 'rails server' ausführt ... – odigity

+1

Entsprechend können Sie nicht: https://github.com/puma/puma/issues/512 – odigity

+2

echo 'alias start_puma = "Bündel exec puma -p 3000 -S ~/puma -C Konfig/puma.rb"' >> ~/.bash_profile && source ~/.bash_profile DANN VERWENDEN start_puma – blnc