Puma 未定义的局部变量或方法“守护进程”错误
Posted
技术标签:
【中文标题】Puma 未定义的局部变量或方法“守护进程”错误【英文标题】:Puma undefined local variable or method `daemonize' error 【发布时间】:2021-08-16 12:14:30 【问题描述】:各位,我找不到问题如下:
config/puma.rb:23:in `_load_from': undefined local variable or method `daemonize' for #<Puma::DSL:0x000055596fadb448> (NameError)
这是我的puma.rb
:
workers 1
threads 1, 6
daemonize true
rails_env = ENV['RAILS_ENV'] || "production"
environment rails_env
app_dir = File.expand_path("../..", __FILE__)
tmp_dir = "#app_dir/tmp"
bind "unix:///#tmp_dir/sockets/puma.sock"
pidfile "#tmp_dir/pids/server.pid"
state_path "#tmp_dir/pids/puma.state"
我的环境是:
OS: Ubtuntu 20.04LTS
Ruby: 2.7.2
Rails: 6.0
希望有人能帮帮我,谢谢!
【问题讨论】:
【参考方案1】:您使用的是 puma 5.X 吗?然后为了使用 systemd/upstart/a 进程管理器而取消了去魔化
https://github.com/puma/puma/pull/2170
还有变更日志:
https://github.com/puma/puma/blob/master/History.md#500--2020-09-17
Daemonization has been removed without replacement.
【讨论】:
【参考方案2】:正如上面nuaky
的回答。 puma 从 5.x 版本开始删除了daemonize
,并且不再提供其他功能。
所以我使用linux命令nohup
来运行puma作为打击:
$ nohup puma > /tmp/null 2>&1 &
所以,我希望你能和我一起学习。
【讨论】:
【参考方案3】:如果您使用的是 puma > 5.0
Daemonization 已经去掉,没有替换,供参考click here
您也可以使用puma-daemon
Gemfile
gem 'puma-daemon', require: false
gem 'puma', '~> 5'
/config/puma.rb
require 'puma/daemon'
daemonize
【讨论】:
以上是关于Puma 未定义的局部变量或方法“守护进程”错误的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk & Rails - nginx 错误“未定义的局部变量或方法‘location_config_filename’”