首页 > 解决方案 > 在当前工作目录或具有 `pool` 和 `golem` 的父目录中找不到配置文件

问题描述

我正在尝试pool在我的 Shinygolem应用程序中使用该包。

我稍微更新了默认值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

为了使用pool,我有一个R/globals.R包含单个调用的文件:

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")
)

我的.Renviron文件在我的项目根文件夹中。

当我部署到 Shinyapps.io 时,我无法弄清楚为什么我不断收到此错误:

Config file not found in current working directory or parent directories

它在本地构建良好。而且,当我用文件中的实际值进行硬替换时dbname,它的构建和部署都很好。hostgolem-config.yml

因此get_golem_config(),导致此错误的函数存在某些问题。这是我的功能:

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是一个简单的包装器system.filepackage参数由我自己的包名预先填充。

我认为这与config::get,因为当我globals.R将文件编辑为:

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")
)

错误返回。

标签: rshinyshinyappsgolem

解决方案


推荐阅读