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

同一服务器能否运行不同Ruby版本的Rails应用?

同一服务器通过RVM运行不同Ruby版本的Rails应用

完全可以在同一服务器上同时运行不同Ruby版本的Rails应用,这正是RVM这类Ruby版本管理工具设计的核心场景之一。以下是具体的实现方式和注意事项:

核心实现步骤

  • 安装目标Ruby版本:先在服务器上安装所需的3.1.2版本,执行命令:

    rvm install 3.1.2
    

    安装完成后可以用rvm list命令查看已安装的所有Ruby版本,确认3.1.2已存在。

  • 用Gemset隔离应用依赖:RVM的Gemset功能可以为每个Ruby版本创建独立的依赖环境,避免不同应用的gem包冲突。

    • 为新应用创建专属gemset:
      rvm use 3.1.2@my_new_rails_app --create
      
      其中my_new_rails_app是自定义的gemset名称,你可以根据实际应用名调整;旧应用继续使用原2.6.5版本对应的gemset即可。
  • 配置应用自动切换环境:在每个Rails应用的根目录下创建两个文件,让RVM进入目录时自动切换到对应环境:

    • .ruby-version:仅写入对应Ruby版本号,比如旧应用写2.6.5,新应用写3.1.2
    • .ruby-gemset:写入对应的gemset名称,比如旧应用写legacy_apps,新应用写my_new_rails_app

部署与启动注意事项

  • 部署新应用时,进入其根目录后,RVM会自动切换到3.1.2版本和对应gemset,此时执行bundle install即可安装适配3.1.2的gem依赖。
  • 启动应用(如Puma、Unicorn等)时,确保进程在正确的Ruby环境中运行:
    • 如果用进程管理工具(如systemd、supervisord)配置启动命令,可以直接指定对应Ruby版本的绝对路径(例如/usr/local/rvm/rubies/ruby-3.1.2/bin/ruby)来启动应用;
    • 也可以在启动脚本中先加载RVM环境(如source /usr/local/rvm/scripts/rvm),再执行启动命令。

只要每个应用的运行环境被正确隔离,不同Ruby版本的应用之间不会产生干扰,旧的2.6.5应用可以正常运行,新的3.1.2应用也能独立部署运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:11:12