2016-06-17 26 views
0

Ich bin mit dem folgenden puma ConfigRun puma Arbeiter in der Produktion, aber nicht in Entwicklung

threads_count = Integer(ENV["DB_POOL"] || ENV["MAX_THREADS"] || 15) 
threads threads_count, threads_count 
workers 3 
preload_app! 

rackup  DefaultRackup 
port  ENV["PORT"]  || 3000 
environment ENV["RACK_ENV"] || "development" 

on_worker_boot do 
    ActiveSupport.on_load(:active_record) do 
    ActiveRecord::Base.establish_connection 
    end 
end 

before_fork do 
    ActiveRecord::Base.connection_pool.disconnect! 
end 

Es ist toll für die Produktion, aber ich will nicht 3 Arbeiter spinnen oder in Entwicklung verwenden webrick. Ich habe versucht, den Worker-spezifischen Code in einem Umgebungscheck zu verpacken, aber das bricht die Puma-DSL. Irgendwelche Ideen, Puma im nicht-gruppierten Modus in Entwicklung zu laufen?

+0

_“ das bricht die Puma-DSL "_ - könnten Sie genauer sein? Die Datei sieht wie Ruby-Syntax aus. – Stefan

+0

Entschuldigung, was ich meinte war, dass wenn ich es in einem Scheck Puma durch einen Fehler über 'Arbeiter' eingewickelt habe. –

Antwort

4

Rails ist nicht in der Puma-Konfigurationsdatei definiert, daher kann Rails.env hier nicht verwendet werden, aber RACK_ENV ist in Ordnung.

+0

Ich war mir nicht bewusst, dass Sie Arbeiter als 0 setzen können. Cool, danke! –

0

Ich finde eine funktionierende Lösung, bevor ich die Antwort von scorix sah, die ich akzeptierte, aber ich endete mit einer etwas anderen Lösung. Dadurch können Sie die Anzahl der Worker festlegen, sodass ich beispielsweise 1 in der Staging- und 3 in der Produktion ausführen kann.

threads_count = Integer(ENV["DB_POOL"] || ENV["MAX_THREADS"] || 15) 
threads threads_count, threads_count 
rackup  DefaultRackup 
port  ENV["PORT"]  || 3000 
environment ENV["RACK_ENV"] || "development" 

if ENV["RACK_ENV"] == "production" 
    workers ENV.fetch("WEB_CONCURRENCY") { 3 } 
    preload_app! 
    ActiveSupport.on_load(:active_record) do 
    ActiveRecord::Base.establish_connection 
    end 
    before_fork do 
    ActiveRecord::Base.connection_pool.disconnect! 
    end 
end 
0

Überprüfen Sie die Configuration Teil auf der Dokumentation.

Was habe ich die Produktion Config auf config/puma/production.rb eingerichtet, so auf die Produktion würden Sie Puma laufen mit puma -C config/puma/production.rb (oder wie Sie es auf prod laufen) und auf die Entwicklung, rails server nicht verwenden diese Konfiguration