Heroku 的 Puma 部署问题
Puma deployment issue with Heroku
我正在尝试使用 Puma 将我的应用程序部署到 Heroku。这是我第一次使用 Puma,因为这是我第一次尝试 "production quality" 应用程序。我已按照 in the dev center 所述添加了 puma,但我 运行 部署后出现无方法错误。这是我在日志中的错误:config/puma.rb:5:in _load_from': undefined method preload_app!' for #<Puma::Configuration::DSL:0x007f89e2686140> (NoMethodError)
我在 config\puma.rb
:
中使用了建议的配置
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
如上面的错误所示,Heroku 似乎对 preload_app!
命令有问题。我被卡住了,不知道从这里去哪里 - 我觉得我以某种方式错误地创建了文件 - 即我只是在我的编辑器中而不是从命令行创建了一个新文件。
这就是我们使用 Rails 4.1.0
在 Heroku 上设置 config/puma.rb
的方式
workers Integer(ENV['PUMA_WORKERS'] || 3)
threads Integer(ENV['MIN_THREADS'] || 1), Integer(ENV['MAX_THREADS'] || 16)
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# worker specific setup
ActiveSupport.on_load(:active_record) do
config = ActiveRecord::Base.configurations[Rails.env] ||
Rails.application.config.database_configuration[Rails.env]
config['pool'] = ENV['MAX_THREADS'] || 16
ActiveRecord::Base.establish_connection(config)
end
end
我们将工作人员和线程保持在最低限度(我们采用免费计划)。
当我重新启动我们的 dyno 时,我在日志中得到了这个输出:
2015-03-.. app[web.1]: [3] Puma starting in cluster mode...
2015-03-... app[web.1]: [3] * Version 2.9.1 (ruby 2.1.5-p273), codename: Team High Five
2015-03-... app[web.1]: [3] * Min threads: 1, max threads: 3
2015-03-... app[web.1]: [3] * Environment: production
2015-03-... app[web.1]: [3] * Process workers: 2
2015-03-... app[web.1]: [3] * Preloading application
我正在尝试使用 Puma 将我的应用程序部署到 Heroku。这是我第一次使用 Puma,因为这是我第一次尝试 "production quality" 应用程序。我已按照 in the dev center 所述添加了 puma,但我 运行 部署后出现无方法错误。这是我在日志中的错误:config/puma.rb:5:in _load_from': undefined method preload_app!' for #<Puma::Configuration::DSL:0x007f89e2686140> (NoMethodError)
我在 config\puma.rb
:
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
如上面的错误所示,Heroku 似乎对 preload_app!
命令有问题。我被卡住了,不知道从这里去哪里 - 我觉得我以某种方式错误地创建了文件 - 即我只是在我的编辑器中而不是从命令行创建了一个新文件。
这就是我们使用 Rails 4.1.0
在 Heroku 上设置config/puma.rb
的方式
workers Integer(ENV['PUMA_WORKERS'] || 3)
threads Integer(ENV['MIN_THREADS'] || 1), Integer(ENV['MAX_THREADS'] || 16)
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# worker specific setup
ActiveSupport.on_load(:active_record) do
config = ActiveRecord::Base.configurations[Rails.env] ||
Rails.application.config.database_configuration[Rails.env]
config['pool'] = ENV['MAX_THREADS'] || 16
ActiveRecord::Base.establish_connection(config)
end
end
我们将工作人员和线程保持在最低限度(我们采用免费计划)。
当我重新启动我们的 dyno 时,我在日志中得到了这个输出:
2015-03-.. app[web.1]: [3] Puma starting in cluster mode...
2015-03-... app[web.1]: [3] * Version 2.9.1 (ruby 2.1.5-p273), codename: Team High Five
2015-03-... app[web.1]: [3] * Min threads: 1, max threads: 3
2015-03-... app[web.1]: [3] * Environment: production
2015-03-... app[web.1]: [3] * Process workers: 2
2015-03-... app[web.1]: [3] * Preloading application