Ruby on rails Thor没有在Shell命令中使用正确的Ruby版本

Ruby on rails Thor没有在Shell命令中使用正确的Ruby版本,ruby-on-rails,ruby,rvm,zsh,thor,Ruby On Rails,Ruby,Rvm,Zsh,Thor,我有一个使用ruby 2.3.1的rails项目。OSX有1.9.3版本,但我使用rvm来管理rubies。rails项目在GEM文件中指定了2.3.1和.ruby版本的点文件 问题是:我正在将rake任务转换为thor脚本。它执行一些shell命令(特别是pg_dump——我也尝试过其他命令),但找到的是OSX ruby而不是项目使用的ruby 我尝试运行用bundle exec包装的脚本,并更改调用shell的方式(backticks、run和system),无论执行什么操作,都会在stdo

我有一个使用ruby 2.3.1的rails项目。OSX有1.9.3版本,但我使用rvm来管理rubies。rails项目在GEM文件中指定了2.3.1和.ruby版本的点文件

问题是:我正在将rake任务转换为thor脚本。它执行一些shell命令(特别是
pg_dump
——我也尝试过其他命令),但找到的是OSX ruby而不是项目使用的ruby

我尝试运行用
bundle exec
包装的脚本,并更改调用shell的方式(backticks、
run
system
),无论执行什么操作,都会在stdout中发出以下错误:

您的Ruby版本是1.9.3,但您的Gemfile指定了2.3.1


我一定错过了文档中的一些内容。

早期的草稿中包括了direnv和zsh作为可能的玩家,但我通过在没有他们的情况下在同事的计算机上测试排除了这些玩家。脚本是否包装在“task:where_task=>:environment do”块中?您知道它运行的用户吗?rvm将允许您指定默认的ruby,您也可以添加到bash配置文件中,为用户选择特定的ruby。我认为task是rake的东西,而不是thor的东西,@bkunzi01@engineersmnky它在我的用户帐户中运行,rvm的默认ruby是2.3.1。早期的草稿包括direnv和zsh作为可能的玩家,但是我在没有它们的情况下在同事的计算机上进行测试,排除了这些问题。脚本是否包装在“task:whatever_task=>:environment do”块中?您知道它运行的用户吗?rvm将允许您指定一个默认的ruby,您也可以添加到bash配置文件中为用户选择特定的ruby。我认为task是rake的东西,而不是thor的东西,@bkunzi01@engineersmnky它在我的用户帐户中运行,rvm的默认ruby是2.3.1。