用于更新基于RVM的ruby安装和gem的脚本

时间:2014-10-08 14:09:28

标签: ruby gem rvm

一些搜索没有显示出更新基于RVM的ruby和gem的明显方法,所以我掀起了以下脚本。希望获得当前安装的宝石列表,更新到新的红宝石,向前拉出这些宝石,然后清除所有东西的旧版本。我在这里发布了反馈意见,因为我没有看到一种简单的方法来测试它,而且我几乎不能胜任ruby而且对RVM一无所知。

#!/usr/bin/env ruby

module RubyUpdate
  def self.cmd(str, cmd)
    puts str
    retval = %x(#{cmd})
    throw(SystemCallError, cmd) unless $? == 0
    return retval
  end

  def self.update
    gems = self.cmd %Q(Getting list of installed gems...), %Q(gem list | cut -d ' ' -f 1)
    self.cmd %Q(Updating ruby...), %Q(\\curl -L https://get.rvm.io | bash -s stable --ruby)
    self.cmd %Q(Reloading...), %Q(rvm reload)
    self.cmd %Q(Updating gems..), %Q(gem update #{gems.gsub("\n", " ")})
    self.cmd %Q(Cleaning up gems...), %Q(gem cleanup)
    self.cmd %Q(Reloading...), %Q(rvm reload)
    self.cmd %Q(Cleaning up ruby...), %Q(rvm cleanup all)
  end
end

begin
  RubyUpdate::update
  puts "Update successful!"
rescue SystemCallError => e
  puts "Update failed!"
  puts e
end

1 个答案:

答案 0 :(得分:1)

你应该使用:

rvm get stable
rvm upgrade current ruby