部署到Heroku,Rails应用程序

时间:2016-07-15 19:30:26

标签: ruby-on-rails ruby heroku

我正在尝试将我的rails应用程序部署到heroku。该应用已上传但由于某种原因无法正常运行。当我输入

  

heroku run rake db:migrate

我收到错误说

  

ActiveRecord :: ConnectionTimeoutError:无法在5.000秒内获得数据库连接(等待5.000秒)

我正在使用puma服务器,我会发布一些可能导致问题的文件...请询问可能导致此错误的任何内容!

配置/ database.ymi

  production:
  adapter:  postgresql
  host:     localhost
  encoding: unicode
  database: FastOrder_production
  pool:     5
  username: <%= ENV['FASTORDER_DATABASE_USER'] %>
  password: <%= ENV['FASTORDER_DATABASE_PASSWORD'] %>
  template: template0
  url:  <%= ENV["DATABASE_URL"] %>
  pool: ENV['RAILS_MAX_THREADS']

配置/ puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_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

2 个答案:

答案 0 :(得分:0)

使用

production:

pool: <%= ENV["DB_POOL"] || ENV['RAILS_MAX_THREADS'] || 5 %> 

现在,您可以通过在Heroku上设置配置变量来设置连接池大小。例如,如果您想将其设置为10,则可以运行:

$ heroku config:set DB_POOL=10

这并不意味着每个dyno现在都有10个开放连接,但只有在需要新连接时才会创建它,直到每个Rails进程最多使用10个连接。

答案 1 :(得分:0)

您应首先创建数据库:

heroku run rake db:create

另外,请检查此Heroku doc有关数据库连接的信息:https://devcenter.heroku.com/articles/concurrency-and-database-connections