首页 > 解决方案 > PUMA ArgumentError: 找不到登录名 -- 扩展 `~'

问题描述

由于某种原因无法启动 Puma。收到此错误

ArgumentError: couldn't find login name -- expanding `~'

使用下面的回溯

Feb 03 15:44:21 shopify-shipping-refactor puma[3061]: Done in 1.33s.
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: rake aborted!
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: ArgumentError: couldn't find login name -- expanding `~'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/pry-0.12.2/lib/pry/pry_class.rb:5:in `expand_path'     
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/pry-0.12.2/lib/pry/pry_class.rb:5:in `<class:Pry>'     
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/pry-0.12.2/lib/pry/pry_class.rb:1:in `<top (required)>'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/pry-0.12.2/lib/pry.rb:119:in `require'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/pry-0.12.2/lib/pry.rb:119:in `<top (required)>'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler/runtime.rb:74:in `require'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler/runtime.rb:74:in `block (2 levels) in require'        
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler/runtime.rb:69:in `each'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler/runtime.rb:69:in `block in require'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler/runtime.rb:58:in `each'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler/runtime.rb:58:in `require'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/bundler-2.1.4/lib/bundler.rb:174:in `require'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /opt/shopify_shipping_refactor/config/application.rb:7:in `<top (required)>'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /opt/shopify_shipping_refactor/Rakefile:4:in `require'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /opt/shopify_shipping_refactor/Rakefile:4:in `<top (required)>'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/bin/ruby_executable_hooks:24:in `eval'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: /usr/local/rvm/gems/ruby-2.6.5/bin/ruby_executable_hooks:24:in `<main>'
Feb 03 15:44:25 shopify-shipping-refactor puma[3061]: (See full trace by running task with --trace)
Feb 03 15:44:25 shopify-shipping-refactor systemd[1]: puma.service: Control process exited, code=exited status=1
Feb 03 15:44:25 shopify-shipping-refactor systemd[1]: Failed to start puma.service.
Feb 03 15:44:25 shopify-shipping-refactor systemd[1]: puma.service: Unit entered failed state.
Feb 03 15:44:25 shopify-shipping-refactor systemd[1]: puma.service: Failed with result 'exit-code'.

标签: rubypuma

解决方案


分析: Ruby 对expand_path基于 C 的运行时的调用(掩盖了堆栈跟踪),但最终还是rb_default_home_dir要弄清楚是什么'~'。此方法依赖于$HOME环境变量来解决这个问题并回退到getlogin()getlogin(3)),getpwnam()如果它不可用。

原因:您看到的错误消息来自该回退失败,因为(可能)您的进程未向控制 tty 和登录用户注册。

解决方案:在运行 puma 时设置 $HOME。使用您希望 Puma 在'~'指定时用作主目录的目录。


推荐阅读