2016-06-17 10 views
0

に私は、次のピューマの設定実行ピューマ生産の労働者が、開発

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 

それは生産のための素晴らしいことだが、私は3人の労働者をスピンアップまたは開発中WEBrickに使用したくないを実行しているではありません。私は労働者の特定のコードを環境検査でラップしようとしましたが、それはpuma DSLを破壊します。開発で非クラスタモードでpumaを実行するためのアイデアですか?

+0

その構成を使用しない生産のため、私は、config/puma/production.rbの生産の設定を設定してやった

プーマDSLを破る "_ - あなたはもっと具体的になりますか?このファイルはRubyの構文のようです。 – Stefan

+0

申し訳ありませんが、私が意味していたのは、私がチェックプーマに「労働者」に関するエラーで包んだときでした。 –

答えて

4

Railsは、ここではRails.envは使用できませんが、RACK_ENVはokです。

workers(ENV["RACK_ENV"] == "production" ? 3 : 0) 
+0

私はあなたが労働者を0人にすることができるとは知らなかった。クール、ありがとう! –

0

私は受け入れscorixの答えを見る前に実用的なソリューションを見つけ出すが、私は少し異なる解決策になってしまいました。これにより、ワーカー数を設定することができます。たとえば、ステージングでは1、実動では3を実行できます。

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

ドキュメントのConfiguration部分をチェックしてください。あなたがpuma -C config/puma/production.rb(またはしかしあなたがPROD上でそれを実行)とPUMAを実行しますし、開発に、rails serverは、「_