Featured image of post 2018-8-2 Puma 一启动就马上退出的解决方法

2018-8-2 Puma 一启动就马上退出的解决方法

问题

puma 一启动就退出。

问题截图

puma
我用的命令是:

bundle exec puma -C ./deploy/puma-server-production.rb

这条命令的意思:让 puma 启动时使用 ./deploy/puma-server-production.rb 这个配置文件

我的 puma-server-production.rb 配置

bind 'tcp://0.0.0.0:9696'

threads 5, 5 environment ENV.fetch("RAILS_ENV") { "production" } workers 2 prune_bundler

app_name = "witticism.com" app_dir = File.expand_path("../..", FILE) app_dir_parent = File.expand_path("../../", FILE) app_path = "/var/www/#{app_name}/"

directory "#{app_path}current" pidfile "#{app_path}/shared/tmp/pids/puma.pid" state_path "#{app_path}/shared/tmp/sockets/puma.state" stdout_redirect "#{app_path}/shared/log/puma.stdout.log", "#{app_path}/shared/log/puma.stderr.log"

on_restart do puts ‘Wittcism puma restart…’ end

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

on_worker_boot do ActiveRecord::Base.establish_connection end

如何解决?

看日志解决。
用如下命令:

tail -f /var/www/witticism.com/shared/log/puma.stderr.log

(你的路径会不一样,自己改改路径就好)

44

错误信息:

uninitialized constant #<Class:#<Puma::DSL:0x00000001183d18>>::ActiveRecord (NameError)

解决方法:加上 if defined?(ActiveRecord)

before_fork do
  ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
end

on_worker_boot do ActiveRecord::Base.establish_connection if defined?(ActiveRecord) end

最后

其实配置文件默认就有 if defined?(ActiveRecord)。
是我手贱删掉了……

使用 Hugo 构建
主题 StackJimmy 设计