Ruby on rails 无效的Ruby路径'//bin/ruby';安装Capistrano捆绑包期间

Ruby on rails 无效的Ruby路径'//bin/ruby';安装Capistrano捆绑包期间,ruby-on-rails,ruby,bundle,capistrano,Ruby On Rails,Ruby,Bundle,Capistrano,我有一个长期运行的Rails应用程序,它在另一个云服务的Ubuntu上运行,但我正在将它迁移到AWS Capistrano3部署到目前为止,但它无法安装需要本机构建的gem,并出现以下错误(这是一个示例) 我已经在底部粘贴了完整的错误,但根本原因错误似乎是调用ruby的路径 sh: 1: //bin/ruby: not found 当在AWS服务器上本地安装时,相同的gem安装良好 我已经调查并确认通过ssh进行的部署使用的是非交互式shell,但我正在使用.bashrc、/etc/envir

我有一个长期运行的Rails应用程序,它在另一个云服务的Ubuntu上运行,但我正在将它迁移到AWS

Capistrano3部署到目前为止,但它无法安装需要本机构建的gem,并出现以下错误(这是一个示例)

我已经在底部粘贴了完整的错误,但根本原因错误似乎是调用ruby的路径

sh: 1: //bin/ruby: not found
当在AWS服务器上本地安装时,相同的gem安装良好

我已经调查并确认通过ssh进行的部署使用的是非交互式shell,但我正在使用.bashrc、/etc/environment和

set :default_env, { "PATH" => "$PATH:/snap/bin" }
…但还是没有快乐

我怀疑调用ruby的路径的形成方式有问题,因为//bin/ruby(带双正斜杠)在语法上不适合bash shell

这就好像有一个环境变量应该被设置并插入到那些斜杠之间,它被定义为一个空字符串(或者只是没有定义),但我已经检查了env vars,以查看交互shell中的非交互shell,并且在交互shell和非交互shell中看起来都是一样的

我没有使用rvm,因为我不需要,我宁愿不增加复杂性,除非它是绝对需要的(我认为它不应该)

你知道为什么ruby会被无效路径调用吗


完整的错误详细信息,用于上下文和参考

An error occurred while installing mysql2 (0.3.21), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.21' --source 'https://rubygems.org/'`
succeeds before bundling.

In Gemfile:
  mysql2


Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/home/rails/myrailsapp/deployonaws/shared/bundle/ruby/2.3.0/gems/therubyracer-0.12.3/ext/v8
//bin/ruby -r ./siteconf20190520-13147-dgcr4x.rb extconf.rb
sh: 1: //bin/ruby: not found

extconf failed, exit code 127

好吧,我知道发生了什么

在使用Unix 34年后,我了解到“//”是路径的有效语法,因此这是一种误导

问题是ruby可执行文件不在//usr/bin中

我尝试了从ruby所在的实际路径进行链接,但是ruby版本(即旧版本)遇到了其他问题

最终的“修复”是重新启动一个新的Ubuntu实例,并使用

sudo apt install ruby-full
…而不是

sudo snap install ruby --classic --channel=2.3/stable
…我以前用过的

使用apt安装将ruby放在/usr/bin下,一切又恢复正常

谢谢