ruby-on-rails – 为什么在使用rake调用heroku toolbelt CLI时会
发布时间:2020-12-17 01:47:57 所属栏目:百科 来源:网络整理
导读:我正在尝试从rake任务执行heroku CLI: 1 task :call_heroku do 2 `heroku pgbackups:url --remote staging` 3 end bundle exec rake call_heroku返回以下输出: /home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/bundler/definition.rb:390:i
我正在尝试从rake任务执行heroku CLI:
1 task :call_heroku do 2 `heroku pgbackups:url --remote staging` 3 end bundle exec rake call_heroku返回以下输出: /home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/bundler/ definition.rb:390:in `validate_ruby!': Your Ruby version is 1.9.3,but your Gemfile specified 2.1.0 (Bundler::RubyVersionMismatch) from /home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/ bundler.rb:116:in `setup' from /home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/ bundler/setup.rb:17:in `<top (required)>' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' --remote staging 从命令行执行heroku pgbackups:url –remote staging将返回预期的URL.我的rvm或heroku CLI配置有问题吗? 环境细节: Rails 3.2.17 Heroku的: joe@warpaint ~/dev/project (master) $heroku version heroku-toolbelt/2.39.0 (i686-linux) ruby/1.9.3 RVM: joe@warpaint ~/dev/project (master) $rvm version rvm 1.25.22 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>,Michal Papis <mpapis@gmail.com> [https://rvm.io/] joe@warpaint ~/dev/project (master) $rvm list rvm rubies jruby-1.7.1 [ i386 ] ree-1.8.7-2012.02 [ i686 ] ruby-1.8.7-p374 [ i686 ] ruby-1.9.2-p320 [ i686 ] ruby-1.9.3-p0 [ i686 ] ruby-1.9.3-p362 [ i686 ] ruby-1.9.3-p392 [ i686 ] ruby-1.9.3-p448 [ i686 ] ruby-1.9.3-p484 [ i686 ] ruby-2.0.0-p0 [ i686 ] * ruby-2.0.0-p247 [ i686 ] ruby-2.0.0-p353 [ i686 ] ruby-2.0.0-p451 [ i686 ] ruby-2.0.0-preview2 [ i686 ] => ruby-2.1.0 [ i686 ] ruby-head [ i686 ] # => - current # =* - current && default # * - default ruby: joe@warpaint ~/dev/project (master) $ruby -v ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux] 解决方法
事实证明这是一个捆绑问题.一些挖掘引发了我这个问题:
https://github.com/bundler/bundler/issues/2355,由@indirect解决,并使用Bundler.with_clean_env(此命令为 more)提及. 现在,上面的任务变为: 1 task :call_heroku do 2 Bundler.with_clean_env { p `heroku pgbackups:url --remote staging` } 3 end 一切都很好! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |