You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Puma时提示找不到tzinfo gem的问题求助

解决Puma启动找不到tzinfo gem的问题

核心原因

rails s默认会通过bundle加载项目依赖的gem,但你的puma-init.sh脚本可能直接调用了系统全局的puma,没有使用bundle管理项目的gem环境,导致找不到bundle安装的tzinfo。

具体解决步骤

  • 修改puma-init.sh的启动命令:
    找到脚本里启动puma的行,把直接调用puma的命令改成bundle exec puma,示例:

    # 原命令可能是
    puma -C config/puma.rb -d
    # 修改为
    bundle exec puma -C config/puma.rb -d
    

    这样会强制使用bundle为当前项目安装的gem集合,而非系统全局gem。

  • 确保脚本加载正确的Ruby环境:
    如果服务器用了rbenv、rvm这类Ruby版本管理工具,在脚本开头添加环境加载命令:

    # 针对rbenv
    eval "$(rbenv init -)"
    # 针对rvm
    source ~/.rvm/scripts/rvm
    

    避免脚本使用系统默认Ruby版本,导致gem路径不匹配。

  • 明确指定RAILS_ENV环境变量:
    在脚本开头添加环境变量声明,确保bundle加载对应环境的gem:

    export RAILS_ENV=production # 根据你的部署环境调整,比如staging
    
  • 先手动验证命令:
    在项目根目录执行bundle exec puma -C config/puma.rb start,如果能正常启动,说明上述修改可以解决问题。

额外排查点

如果还是不行,检查bundle show tzinfo的输出路径,确认puma启动时的gem路径是否包含这个目录,或者在puma.rb里添加:

ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', __dir__)
require 'bundler/setup'

强制加载项目的Gemfile依赖。

内容的提问来源于stack exchange,提问作者Ari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:03:33