When rendering (or running) a document with R markdown, it inherits the current R Global environment. This will produce unexpected behaviors, such as poisoning the R Global environment with existing variables. By rendering the document in a new, safe R environment, a vanilla, rendered document is produced.

## Usage

safe(expr, ..., show = TRUE, env = safe_env())

## Arguments

expr

expression that contains all the necessary library calls to execute. Expressions within callr do not inherit the existing, loaded libraries.

...

parameters passed to callr::r

show

Logical that determines if output should be displayed

env

Environment to evaluate the document in

## Details

The environment variable LEARNR_INTERACTIVE will be set to "1" or "0" depending on if the calling session is interactive or not.

Using safe should only be necessary when locally deployed.

## Examples

if (FALSE) {
# Direct usage
safe(run_tutorial("hello", package = "learnr"))

# Programmatic usage
library(rlang)

expr <- quote(run_tutorial("hello", package = "learnr"))
safe(!!expr)

tutorial <- "hello"
safe(run_tutorial(!!tutorial, package = "learnr"))
}