2015-02-07 124 views
0

我有一个Capistrano部署需要通过使用Ruby反引号调用Heroku工具栏来获取数据库URL(使用部署机器,而不是目标),即heroku pgbackups:url --app strong-galaxy-5765。我已经在Capistrano 2下做了几个月,但现在升级到Ruby 2.2和Cap 3后,在Capistrano任务中使用Ruby反引号调用heroku命令会产生一个空白字符串。这不仅仅是这个特别的命令:即使'heroku --version'也不会返回任何结果。为什么Heroku客户端CLI不能在Capistrano下工作?

数据点: *标准shell命令反拨,并产生相应的输出 *如果给出'heroku'命令的绝对路径,行为是相同的。 * whoami显示Capistrano任务下的用户是我。 *我已经在带反引号的通用Ruby脚本中尝试过的所有heroku命令都正常工作。 *一切正常,直到我切换到卡皮斯特拉诺3和红宝石2.2

所以肯定有一些关于Capistrano环境,我爬墙试图找出它会是什么。一个可能的线索:运行'heroku'命令时,我从Capistrano任务中得到以下错误输出:

/Users/upstill/.rvm/gems/[email protected]/gems/bundler-1.7。 12/lib/bundler/definition.rb:380:在validate_ruby!': Your Ruby version is 1.9.3, but your Gemfile specified 2.2.0 (Bundler::RubyVersionMismatch) from /Users/upstill/.rvm/gems/[email protected]/gems/bundler-1.7.12/lib/bundler.rb:118:in设置' from /Users/upstill/.rvm/gems/[email protected]/gems/bundler-1.7.12/lib/bundler/setup。 rb:17:在<top (required)>' from /usr/local/heroku/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in中需要来自/usr/local/heroku/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'要求'的' INFO'heroku pgbackups:url --app strong -galaxy-5765' =>(pid 46786 exit 1)

注意:我的Ruby环境是2.2.0,如ALL OF my Gemfile所示:r中的rbenv_ruby p deploy.rb文件,rvm,rbenv和'ruby -v'。 Capistrano所做的其他一切都使用2.2环境。但是'heroku --version'显示IT是为1.9.3构建的。我很想为2.2构建它,但在新环境中再次运行安装程序并没有改变Ruby规范。

好吧,所以这是我的死路一条。任何帮助将被绝望地赞赏。

谢谢你,史蒂夫

回答

0

通过自制软件,而不是

$ brew install heroku 
+0

该诀窍安装工具区。谢谢你,杰夫!对于额外的问题,你能简单地告诉我为什么这有所作为吗? – 2015-02-09 23:03:06

+0

,因为它使用了独立的工具栏,它将使用您的PATH中的任何红宝石 – 2015-02-10 23:39:44

相关问题