我正在尝试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
,它的构建和部署都很好。host
golem-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.file
,package
参数由我自己的包名预先填充。
我认为这与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")
)
错误返回。