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

Ubuntu下Webhooks无法读取RVM安装的正确Ruby版本

问题:Webhook触发脚本与手动执行脚本时Ruby版本不一致

在Ubuntu 22系统上配置webhook,通过bash脚本执行Ruby相关任务时,发现手动运行脚本和webhook触发脚本使用的Ruby版本不一致。

测试脚本(test-ruby.sh)

#!/bin/sh
echo 'Testing...'
ruby -v;
which ruby;
bundle -v;
which bundle;

现象

  • 手动执行sh test-ruby.sh时,输出的是RVM安装的Ruby版本(路径指向~/.rvm/...)
  • 通过webhook触发同一脚本时,输出的是系统默认Ruby版本(路径指向/usr/bin/ruby)

原因

RVM的环境配置通常在用户登录shell的配置文件(如.bashrc、.bash_profile)中加载,但webhook服务以后台进程身份运行,不会加载这些用户级别的shell配置,因此无法识别RVM管理的Ruby,默认使用系统自带版本。

解决方法

方法1:在脚本中手动加载RVM环境

在脚本开头添加RVM初始化脚本,确保脚本能识别RVM管理的Ruby:

#!/bin/sh
# 加载RVM环境,替换为你的用户实际路径
source /home/your_username/.rvm/scripts/rvm
# 可选:指定要使用的Ruby版本(替换为你手动执行时的版本)
rvm use 3.2.2

echo 'Testing...'
ruby -v;
which ruby;
bundle -v;
which bundle;

方法2:直接使用Ruby的绝对路径

找到手动执行时Ruby和bundle的绝对路径(例如/home/your_username/.rvm/rubies/ruby-3.2.2/bin/ruby),在脚本中直接调用该路径:

#!/bin/sh
echo 'Testing...'
/home/your_username/.rvm/rubies/ruby-3.2.2/bin/ruby -v;
which /home/your_username/.rvm/rubies/ruby-3.2.2/bin/ruby;
/home/your_username/.rvm/gems/ruby-3.2.2/bin/bundle -v;
which /home/your_username/.rvm/gems/ruby-3.2.2/bin/bundle;

方法3:调整Webhook服务的运行用户

若webhook默认以root或其他系统用户运行,修改其服务配置,改用你的普通用户身份运行。这样服务会加载该用户的shell配置,自动识别RVM环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:21:07