Skip to content

Instantly share code, notes, and snippets.

@vitaliel
Created November 20, 2009 23:41
Show Gist options
  • Save vitaliel/239882 to your computer and use it in GitHub Desktop.
Save vitaliel/239882 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# Author: Vitalie L
# Simple replacer to bundler gem
# Sample config file
=begin
rails,2.2.3
rcov
rdiscount
uuidtools,1.0.7
reliable-msg,1.1.2,http://www.example.com/download/reliable-msg-1.1.2.gem
=end
require 'rubygems'
#------------------------------------------
def install_one_gem(gem_name, version, url)
gi="gem install --no-ri --no-rdoc"
begin
if version
gem gem_name, version
else
gem gem_name
end
puts "#{gem_name} #{version} is installed"
rescue Gem::LoadError => e
#p e
if url
glocal_path = "/tmp/#{gem_name}.gem"
if system "wget '#{url}' -O #{glocal_path} -o /dev/null"
cmd = "#{gi} #{glocal_path}"
else
puts "can not download gem from #{url}"
return false
end
else
extra = version ? "-v #{version}" : ""
cmd = "#{gi} #{extra} #{gem_name}"
end
begin
puts cmd
rez = system(cmd)
return false if ! rez
rescue
return false
end
end
return true
end
#------------------------------------------
# Main program
gems = File.open(File.join(File.dirname(__FILE__), 'gems_config.txt')) {|f| f.read}
gems.each_line do |l|
l.chomp!
gem_name, version, url = l.split(',', 3)
3.times do |i|
rc = install_one_gem(gem_name, version, url)
if rc
break
else
exit 1 if i >= 2
sleep(10)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment