使用Capistrano部署含Bun的Rails应用失败,求排查方案
Capistrano部署时找不到Bun的排查方案
Capistrano的shell环境没加载Bun路径
手动装Bun时,它会把路径写到~/.bashrc或~/.profile里,但Capistrano默认用非交互式shell,不会自动加载这些配置文件。
解决办法二选一:- 全局配置:用sudo权限创建
/etc/profile.d/bun.sh,内容写export PATH="$HOME/.bun/bin:$PATH",这样所有用户的shell都能读到Bun路径 - Capistrano配置:在
deploy.rb里加一行set :default_env, { PATH: '$HOME/.bun/bin:$PATH' },强制部署时加载路径
- 全局配置:用sudo权限创建
先确认Capistrano运行时的PATH是否包含Bun
可以在部署配置里加个调试任务,直接看环境变量:namespace :debug do desc "打印环境变量和Bun路径" task :env do on roles(:app) do execute :echo, "$PATH" execute :which, "bun" end end end运行
cap production debug:env,看输出里有没有~/.bun/bin,以及which bun能不能返回正确路径。如果找不到,说明路径确实没加载进去。检查Bun安装的权限问题
确认deploy用户对~/.bun目录有读写权限,重新跑一遍安装命令curl -fsSL https://bun.sh/install | bash,看有没有权限报错,确保安装过程完全成功。核对cssbundling-rails的配置
检查config/application.rb或config/initializers/assets.rb里有没有指定Bun作为CSS构建工具:Rails.application.config.css_bundler = :bun同时看
package.json里的scripts部分,build:css命令是不是用了bun来执行。
内容的提问来源于stack exchange,提问作者croceldon
相关产品推荐
相关产品推荐

