我正在运行以下puma配置
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
这对于制作非常有用,但我不想在工作中使用webrick。我尝试在环境检查中包装工作者特定的代码,但这打破了美洲狮DSL。在开发中以非聚集模式运行puma的任何想法?
答案 0 :(得分:4)
Rails
,因此此处无法使用Rails.env
,但RACK_ENV
可以。
workers(ENV["RACK_ENV"] == "production" ? 3 : 0)
答案 1 :(得分:1)
在看到我接受的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
答案 2 :(得分:0)
查看文档中的Configuration部分。
我所做的是在config/puma/production.rb
上设置生产配置,所以在制作时你会用puma -C config/puma/production.rb
(或者你在prod上运行它)和开发时运行puma rails server
不会使用该配置