Skip to content

Instantly share code, notes, and snippets.

@revans
Created August 16, 2010 23:05
Show Gist options
  • Save revans/527928 to your computer and use it in GitHub Desktop.
Save revans/527928 to your computer and use it in GitHub Desktop.
class GemBackup
class << self
def to_file(dir)
File.open(File.join(dir, 'gem_list_backup.txt'), 'w') { |f| f << `gem list` }
end
def install(file)
@gems = File.read(file)
versioned(@gems).each do |g|
puts "~ NOTE: Installing #{g[:gemname]}, versions: #{g[:versions].join(', ')}"
g[:install_code].each do |gems|
# `#{gems}`
end
end
end
private
def versioned(gems)
gems.collect do |g|
name, versions = g.split(/\s\(/)
versions = versions.gsub(/\)\n/, '').split(', ').reverse
install_code = []
versions.each { |v| install_code << "sudo gem install #{name} -v=#{v}" }
{
:gemname => name,
:versions => versions,
:install_code => install_code
}
end
end
end
end
# GemBackup.to_file('/Users/revans/Desktop')
GemBackup.install('/Users/revans/Desktop/gem_list_backup.txt')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment