3

I am attempting to use the pool package in my Shiny golem application.

I have slightly updated the default golem-config.yml:

default:
  golem_name: mygolem
  golem_version: 0.0.0.9000
  app_prod: no
  default_programs: !expr c(1:10000)
  db_host: mydata.us-west-2.rds.amazonaws.com
  db_name: efs
dev:
  golem_wd: !expr here::here()
  default_programs: !expr c(1:10000)
  db_host: mydata-new.us-west-2.rds.amazonaws.com
  db_name: efs
production:
  default_programs: !expr c()
  db_host: mydata-new.us-west-2.rds.amazonaws.com
  db_name: efs
  app_prod: yes

In order to use pool, I have a R/globals.R file that contains a single call:

pool <- pool::dbPool(
  RMySQL::MySQL(),
  dbname = get_golem_config("db_name"),
  host = get_golem_config("db_host"),
  username = Sys.getenv("DB_USERNAME"),
  password = Sys.getenv("DB_PASSWORD")
)

My .Renviron file is in my project root folder.

I can not figure out why I keep getting this error when I deploy to Shinyapps.io:

Config file not found in current working directory or parent directories

It builds locally fine. And, when I hard replace dbname and host with the actual values from the golem-config.yml file, it builds and deploys just fine.

So there is something about the get_golem_config() function that is causing this error. Here is my function:

get_golem_config <- function(value, config = Sys.getenv("R_CONFIG_ACTIVE", "default"),  use_parent = TRUE) {
  config::get(value = value, 
              config = config, 
              file = app_sys("golem-config.yml"), 
              use_parent = use_parent
  )
}

app_sys is a simple wrapper around system.file with the package parameter pre-populated by my own package name.

I think it has something to do with the config::get, because when I edit my globals.R file to be:

pool <- pool::dbPool(
  RMySQL::MySQL(),
  dbname = config::get(value = "db_name", 
                       config = Sys.getenv("R_CONFIG_ACTIVE", "default"), 
                       file = app_sys("golem-config.yml"), 
                       use_parent = TRUE
  ),
  host = config::get(value = "db_host", 
                     config = Sys.getenv("R_CONFIG_ACTIVE", "default"), 
                     file = app_sys("golem-config.yml"), 
                     use_parent = TRUE
  ),
  username = Sys.getenv("DB_USERNAME"),
  password = Sys.getenv("DB_PASSWORD")
)

The error returns.

Dylan Russell
  • 936
  • 1
  • 10
  • 29

0 Answers0