Class: Rcr::GemSync
- Inherits:
-
Object
- Object
- Rcr::GemSync
- Defined in:
- lib/rcr/gem_sync.rb
Constant Summary collapse
- VERSION =
'0.2.0'- GITHUB =
"http://gems.github.com"- RCR_GEM_LIST =
File.(File.join(File.dirname(__FILE__), *%w[.. runcoderun_gems.txt]))
Class Method Summary collapse
- .convert_gem_list(string) ⇒ Object
- .gem_installed?(name, version) ⇒ Boolean
- .install_gems ⇒ Object
- .installed_gems ⇒ Object
- .parse_name(string) ⇒ Object
- .parse_versions(string) ⇒ Object
Class Method Details
.convert_gem_list(string) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rcr/gem_sync.rb', line 29 def self.convert_gem_list(string) gems = [] string.each do |line| name = parse_name(line) next unless name versions = parse_versions(line) versions.each do |version| gems << OpenStruct.new(:name => name, :version => version.strip) end end gems end |
.gem_installed?(name, version) ⇒ Boolean
50 51 52 |
# File 'lib/rcr/gem_sync.rb', line 50 def self.gem_installed?(name, version) installed_gems.detect {|gem| gem.name == name && gem.version == version} end |
.install_gems ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rcr/gem_sync.rb', line 9 def self.install_gems gem_list = File.read(RCR_GEM_LIST) convert_gem_list(gem_list).each do |gem| if gem_installed?(gem.name, gem.version) puts "skipping #{gem.name} #{gem.version}" next end cmd = "gem install #{gem.name} --no-ri --no-rdoc" cmd << " --version #{gem.version}" if gem.version puts cmd puts `#{cmd}` unless $?.success? cmd << " --source #{GITHUB}" puts "***** WARNING Trying to install gem #{gem.name} from github - watch for security issues." puts cmd puts `#{cmd}` end end end |
.installed_gems ⇒ Object
54 55 56 |
# File 'lib/rcr/gem_sync.rb', line 54 def self.installed_gems @installed_gems ||= convert_gem_list `gem list` end |
.parse_name(string) ⇒ Object
42 43 44 |
# File 'lib/rcr/gem_sync.rb', line 42 def self.parse_name(string) string.match(/[\w\-_]*/)[0] end |
.parse_versions(string) ⇒ Object
46 47 48 |
# File 'lib/rcr/gem_sync.rb', line 46 def self.parse_versions(string) string.scan(/([\d\.]+)/).flatten end |