The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Real-world projects typically need different configurations for development, quality assurance, and production environments. This guide shows you how to set up environment-specific configurations.
Consider this common workflow:
Development: Developers work with data to produce outputs
QA: Quality assurance independently confirms the results of the developer
Production: Verified data and final outputs are made available to
Each environment needs different paths, but you don’t want to change your code.
Here’s how to set up different configurations for each environment:
default:
paths:
data: "/demo/DEV/username/project1/data"
output: "/demo/DEV/username/project1/output"
programs: "/demo/DEV/username/project1/programs"
qa:
paths:
data: "/demo/QA/project1/data"
output: "/demo/QA/project1/output"
programs: "/demo/QA/project1/programs"
prod:
paths:
data: "/demo/PROD/project1/data"
output: "/demo/PROD/project1/output"
programs: "/demo/PROD/project1/programs"
Let’s create a multi-environment configuration:
library(envsetup)
# Create temporary directory
dir <- fs::file_temp()
dir.create(dir)
config_path <- file.path(dir, "_envsetup.yml")
# Write multi-environment config
file_conn <- file(config_path)
writeLines(
paste0(
"default:
paths:
data: '", dir, "/demo/DEV/username/project1/data'
output: '", dir, "/demo/DEV/username/project1/output'
programs: '", dir, "/demo/DEV/username/project1/programs'
qa:
paths:
data: '", dir, "/demo/QA/project1/data'
output: '", dir, "/demo/QA/project1/output'
programs: '", dir, "/demo/QA/project1/programs'
prod:
paths:
data: '", dir, "/demo/PROD/project1/data'
output: '", dir, "/demo/PROD/project1/output'
programs: '", dir, "/demo/PROD/project1/programs'"
), file_conn)
close(file_conn)
# Load default configuration (development)
envsetup_config <- config::get(file = config_path)
rprofile(envsetup_config)
#> Assigned paths to R_GlobalEnv
# Check the paths
cat("Default environment paths:\n")
#> Default environment paths:
cat("Data:", get_path(data), "\n")
#> Data: /shared/R_Temp/nmasel/RtmpKbVJua/file1962b12c182d87/demo/DEV/username/project1/data
cat("Output:", get_path(output), "\n")
#> Output: /shared/R_Temp/nmasel/RtmpKbVJua/file1962b12c182d87/demo/DEV/username/project1/output
# Load QA configuration
envsetup_config <- config::get(file = config_path, config = "qa")
rprofile(envsetup_config)
#> Assigned paths to R_GlobalEnv
# Check the paths
cat("QA environment paths:\n")
#> QA environment paths:
cat("Data:", get_path(data), "\n")
#> Data: /shared/R_Temp/nmasel/RtmpKbVJua/file1962b12c182d87/demo/QA/project1/data
cat("Output:", get_path(output), "\n")
#> Output: /shared/R_Temp/nmasel/RtmpKbVJua/file1962b12c182d87/demo/QA/project1/output
# Load production configuration
envsetup_config <- config::get(file = config_path, config = "prod")
rprofile(envsetup_config)
#> Assigned paths to R_GlobalEnv
# Check the paths
cat("Production environment paths:\n")
#> Production environment paths:
cat("Data:", get_path(data), "\n")
#> Data: /shared/R_Temp/nmasel/RtmpKbVJua/file1962b12c182d87/demo/PROD/project1/data
cat("Output:", get_path(output), "\n")
#> Output: /shared/R_Temp/nmasel/RtmpKbVJua/file1962b12c182d87/demo/PROD/project1/output
The config
package supports inheritance, meaning
environments can inherit from default
and only override
specific settings:
default:
paths:
data: "/demo/DEV/username/project1/data"
output: "/demo/DEV/username/project1/output"
programs: "/demo/DEV/username/project1/programs"
log_level: "DEBUG"
prod:
paths:
data: "/demo/PROD/project1/data"
output: "/demo/PROD/project1/output"
log_level: "ERROR"
# programs inherits from default
default
for development: Most
development work happens here_envsetup.yml
in
your repositoryThe next guide covers advanced path management, including how to handle situations where data might exist in multiple locations and you need smart path resolution.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.