Class: RBundler

Inherits:
Object
  • Object
show all
Defined in:
lib/rbundle.rb

Class Method Summary collapse

Class Method Details

.bundle(parallels) ⇒ Object



20
21
22
23
# File 'lib/rbundle.rb', line 20

def self.bundle(parallels)
  install_installer(parallels)
  self.read_requirements.each {|d| install(d, parallels)}
end

.command_inspector(exit_code) ⇒ Object



31
32
33
# File 'lib/rbundle.rb', line 31

def self.command_inspector(exit_code)
  throw 'Installation failed.' if exit_code != 0
end

.install(dependency, parallels) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/rbundle.rb', line 48

def self.install(dependency, parallels)
  with_retries(args = [dependency, parallels]) do |dependency, parallels|
    puts "Installing #{dependency['package']}"
    command = %{
     R --slave --vanilla -e "options(warn=2); options("Ncpus=#{parallels}L"); library(devtools); if ((!'#{dependency['package']}' %in% installed.packages()[,'Package']) || packageVersion('#{dependency['package']}') < '#{dependency['version']}') install_version('#{dependency['package']}', version='#{dependency['version']}', repos=c('https://cloud.r-project.org'), quiet=F)"
    }
    puts "Executing #{command}"
    `#{command}`
    command_inspector($?.exitstatus)
  end
end

.install_installer(parallels) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/rbundle.rb', line 35

def self.install_installer(parallels)
  with_retries(args=[parallels]) do |parallels|
    puts "Installing devtools"
    command = %{
      R --vanilla --slave -e "options("Ncpus=#{parallels}L"); if (! ('devtools' %in% installed.packages()[,'Package'])) install.packages(pkgs='devtools', repos=c('https://cloud.r-project.org'), quiet=F)"
    }
    puts "Executing #{command}"
    `#{command}`
    `R --slave --vanilla -e "library(devtools)"`
    command_inspector($?.exitstatus)
  end
end

.read_requirementsObject



25
26
27
28
29
# File 'lib/rbundle.rb', line 25

def self.read_requirements
  dependencies_definitions = "#{Dir.pwd}/dependencies.txt"
  puts "Reading Dependencies to install from #{Dir.pwd}/dependencies.txt"
  YAML.load(File.open(dependencies_definitions))
end