2012-11-13 13 views
26

Normalmente, quando si esegue rails server si avvia Webrick. Se installi la gemma 'thin', allora inizia 'thin'. Mi piacerebbe fare la stessa cosa con il server 'puma'.Come faccio ad avviare 'puma', automaticamente, quando eseguo `rails server` (come fa Thin)

Vedo che il comando start all'interno di railties (lib/rails/commands) chiama super, ma non riesco a trovare quali siano le varie opzioni per "super". Ho anche rivisto molti riferimenti a Rails all'interno di "thin".

Ho trovato una voce Changelog dal titolo "Aggiunto il supporto Thin allo script/server # 488 [Bob Klosinski]" dall'ottobre del 2008, ma quell'area di codice è cambiata significativamente da quel commit (a93ea88c0623b4f65af98c0eb55924c335bb3ac1).

Se qualcuno potesse indirizzarmi alla sezione di codice corretta, sarebbe molto utile.

risposta

52

Dopo un po 'di scavo, ho trovato questa risposta: https://stackoverflow.com/a/14911994/604526

Per rendere Puma predefinito, incollare questo codice in script/rotaie sopra richiedono 'rotaie/comandi':

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

Puma è il server predefinito ora se utilizzare 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 

Con Rails 4 è sufficiente aggiungere il puma-gioiello al Gemfile. (Testato con Rails 4.0.2 e Puma 2.6.0)

+2

Questa dovrebbe essere la risposta accettata –

+0

Questo non ha funzionato per me. Ma penso che sia perché la mia app sta usando thin. – betomoretti

+0

Come si fa il contrario? Non voglio caricare puma di default nello sviluppo. – abhishek77in

2

Puma documentation suggerisce di anteporre #\ -s puma al numero config.ru.

+0

Grazie. Provato. Senza fortuna. Ottieni ancora "Booting WEBrick" o "Booting Thin". Mi chiedo se questo è un bug di Rails? –

+0

@MattScilipoti Deve essere qualcosa con Rack. Ma non penso che sia un bug, piuttosto ti mancano solo alcune impostazioni. – RocketR

+0

Grazie per 'config.ru' :) – Sairam

9

Questo funziona per me. Di Ruby 2.0.0 Rails 3.2.13 Puma 1.6.3

rails s puma 
+0

Questo mi ha fatto perché ARGV [0] non è vuoto. reload_libs carica lib/tasks/* e ho ipotizzato che se fosse stato impostato ARGV [0], volessi eseguirlo come comando. – pedz

16

Almeno in Rails 4, è solo bisogno di aggiungere quanto segue al vostro Gemfile

gem 'puma' 

quindi eseguire 'fascio', e poi quando si esegue 'rails server' e Puma verrà utilizzato.

+1

Questo funziona. Ora, se solo potessi capire come farlo caricare automaticamente config/puma.rb quando si esegue il server 'rails' ... – odigity

+1

In base a questo, non è possibile: https://github.com/puma/puma/issues/512 – odigity

+2

echo 'alias start_puma = "pacchetto exec puma -p 3000 -S ~/puma -C config/puma.rb"' >> ~/.bash_profile && source ~/.bash_profile THEN USE start_puma – blnc

Problemi correlati