ruby - 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'.
解决方案
分析: Ruby 对expand_path
基于 C 的运行时的调用(掩盖了堆栈跟踪),但最终还是rb_default_home_dir
要弄清楚是什么'~'
。此方法依赖于$HOME
环境变量来解决这个问题并回退到getlogin()
(getlogin(3)),getpwnam()
如果它不可用。
原因:您看到的错误消息来自该回退失败,因为(可能)您的进程未向控制 tty 和登录用户注册。
解决方案:在运行 puma 时设置 $HOME。使用您希望 Puma 在'~'
指定时用作主目录的目录。
推荐阅读
- sql - 包含以“S”开头的 480 行
- django - 在 Django 视图页面中添加查询集月份和年份下拉列表过滤器
- javascript - JavaScript 原型拼图
- android - GetBitmap 上的 java.lang.NullPointerException
- python - Pandas - 如何根据条件制作新列
- asp.net-web-api - 如何通过将数据传递到 Web API 在 ASP.NET MVC 应用程序中注册新用户?
- xml - 使用 targetNamespace 分离复杂类型的 XSD
- html - 如何使 div 响应并折叠到小屏幕上的选项卡
- python - python中的模拟退火和随机爬山
- terraform - Terraform - 允许除特定端口之外的所有出站端口?