Class: R

Inherits:
Object
  • Object
show all
Defined in:
lib/lang/r/impl.rb

Overview

r language protocol

Instance Method Summary collapse

Constructor Details

#initialize(src, libs = [], **kwargs) ⇒ R

Returns a new instance of R.



7
8
9
10
11
# File 'lib/lang/r/impl.rb', line 7

def initialize(src, libs = [], **kwargs)
  @src = src
  @libs = libs
  super(**kwargs)
end

Instance Method Details

#build(code, _) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/lang/r/impl.rb', line 13

def build(code, _)
  libraries = ([
    :pipeR
  ] + @libs).map { |name| "suppressPackageStartupMessages(library(#{name}))" }

  sources = ["source('#{File.dirname(__FILE__)}/io.R')"] +
            (@src ? [@src] : []).map { |name| "source('#{SRC_DIR}/#{name}.R')" }

  extra = [
    '`|` <- `%>>%`',
    "conn_args <- list(host='#{HOST}', user='#{USER}', dbname='#{DB}', port='#{PORT}')",
    'args <- commandArgs(trailingOnly = T)',
    'sql_input    <- init_sql_input(conn_args, args[1])',
    'table_input  <- init_table_input(conn_args, args[1])',
    'table_output <- init_table_output(conn_args, args[1])'
  ]

  [libraries, sources, extra, code].join "\n"
end

#run_script(env, fname, task) ⇒ Object



33
34
35
# File 'lib/lang/r/impl.rb', line 33

def run_script(env, fname, task)
  env.send :sh, "Rscript #{fname} '#{task.scope || 'public'}'"
end