ruby-on-rails - 为什么在使用 rake 调用 heroku toolbelt CLI 时会出现 RubyVersionMismatch?

标签 ruby-on-rails heroku rvm heroku-toolbelt

我正在尝试执行 heroku来自 rake 任务的 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

英雄:
joe@warpaint ~/dev/project (master) $ heroku version
heroku-toolbelt/2.39.0 (i686-linux) ruby/1.9.3

房车:
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    

一切都很好!

关于ruby-on-rails - 为什么在使用 rake 调用 heroku toolbelt CLI 时会出现 RubyVersionMismatch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23037148/

相关文章:

ruby-on-rails - 哪个适用于多用户 Ruby 设置? RVM 还是 RBenv?

css - rails 4 : how to apply custom CSS to Rails form file field

ruby-on-rails - Carrierwave:在非ActiveRecord继承类中挂载Uploader

sql - 如何将 SQL 字符串解析为 rails Arel 对象

ruby-on-rails - rails 在生产服务器中包含 CarrierWave::RMagick 错误

ruby - 如何在终端提示中显示 RVM 当前的 Ruby 和 gemset?

ruby - 在 Mac OS X Lion 上安装 Ruby 1.9.3 时出错

java - 使用 chromedriver 进行测试在 Heroku 服务器上部署的 java 应用程序中不起作用

python - css 在本地工作但在部署到 heroku flask 后失败

python - DoesNotExist 在/accounts/register/站点匹配查询不存在。 ( Django , python )