| Messenger | R Documentation |
Reference class object to allow passing of messages
messenger(racas = TRUE, envir = parent.frame(), ...)
The racasMessenger (called with messenger) should be reset at the
beginning of rApache routes and by utility functions that are called by
node.js. Prefix these utility functions with "external." Other
functions should not reset the racasMessenger, but can define their own local
Messenger objects.
A json object with the sessionid among a number of html divs to display back to the user
#Basic Messenger
myMessenger <- Messenger$new(envir = environment())
#Racas Messenger
#This special messenger is stored within the racas environment and can be passed in and out of functions
#To retrieve the racas messenger
racasMessenger <- messenger()
#To reset the messenger
racasMessenger <- messenger()$reset()
#Adding messages
myMessenger <- Messenger$new(envir = environment())
myMessenger$addError("myerror")
myMessenger$addWarning("mywarning")
myMessenger$addInfo("mywarning")
myMessenger$addUserError("my user error")
myMessenger$addUserWarning("my user warning")
myMessenger$addUserInfo("my user info")
#Running and capture output using messenger
myMessenger <- Messenger$new(envir = environment())
#This is run like normal
myMessenger$capture_output({test <- 1+1})
test
or
myMessenger$capture_output('test <- 1+1')
test
or
myMessenger$capture_output({test <- 1; test <- 1+test})
#This captures the error
myMessenger <- Messenger$new(envir = environment())
test <- function() stop("there is an error!")
myMessenger$capture_output("test()")
myMessenger$errors
#Capturing a user error on run
myMessenger <- Messenger$new(envir = environment())
test <- function() stop("there is an error!")
myMessenger$capture_output("test()", userError = "There was an error running test function")
myMessenger$errors
myMessenger$userErrors
#stopOnError = TRUE will throw error if error occurs
myMessenger <- Messenger$new()
myMessenger$devMode <- FALSE
test <- function() stop("there is an error!")
myMessenger$capture_output({test()}, stopOnError = TRUE, userError = "some sort of error to return to user")
myMessenger$errors
myMessenger$userErrors
#devMode bypassses logic and just evaluate's the given expression
myMessenger <- Messenger$new()
myMessenger$devMode <- TRUE
test <- function() stop("there is an error!")
myMessenger$capture_output('{test()}')
myMessenger$errors
#Adding a user error within a capture_output Call (use racas messenger)
racasMessenger <- messenger()$reset()
test <- function() {
racasMessenger <- messenger()
e <- try(stop("there is an error!"), silent = TRUE)
if(class(e)=="try-error") {
racasMessenger$addUserError("Inner error")
#note, you have to throw and error for the outer userError to be added
stop("some error")
}
return(1)
}
racasMessenger$capture_output("answer <- test()", userError = "Outer error")
racasMessenger$userErrors
# At the top of an rApache file
globalMessenger <- messenger()
globalMessenger$reset()
globalMessenger$logger <- logger(logName = "com.acas.name.of.big.module", reset=TRUE)
# An R function that is called by node.js
external.runBigModule <- function(request) {
globalMessenger <- messenger()
globalMessenger$reset()
globalMessenger$logger <- logger(logName = "com.acas.name.of.big.module", reset=TRUE)
}
# While coding interactively, the logger can be changed to log to console
globalMessenger <- messenger()
globalMessenger$logger <- logger(logName = "com.acas.name.of.big.module", logToConsole=TRUE, reset=TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.