从 RStudio Connect 检测 R 代码是否为 运行
Detect if R code is running from RStudio Connect
我有一些内容(用 R 语言编写)部署到 RStudio Connect 实例。
我希望能够做类似的事情:
if (isTRUE(is_connect)) {
print("Running on Connect")
} else {
print("Not running on Connect")
}
也就是说,我想让我的代码检测它是否来自 RStudio Connect 运行,并根据其环境表现不同。
如何使用 R 代码检测它是否在 RStudio Connect 上 运行?
自 v1.8.8(2021 年 4 月)起,RStudio Connect 已将 CONNECT_SERVER
环境变量定义为所有内容运行时 (source)。
您可以使用此环境变量的存在来检测您是否 运行 连接:
is_connect = function() {
Sys.getenv("CONNECT_SERVER") != ""
}
然后您可以在您的代码中使用它:
if (isTRUE(is_connect())) {
print("Running on Connect")
} else {
print("Not running on Connect")
}
当然这个解决方案并不是万无一失的:没有什么可以阻止我在我的本地机器上定义一个 CONNECT_SERVER
环境变量,但是只要你不这样做你就会没事...
我一直在使用的替代方法是 R_CONFIG_ACTIVE
envvar。来自 https://docs.rstudio.com/connect/admin/process-management/#using-the-config-package、
By default, R processes launched by RStudio Connect set R_CONFIG_ACTIVE
to rsconnect
.
这个这个,有人可能会用到
if (Sys.getenv("R_CONFIG_ACTIVE") == "rsconnect") {
print("Running on Connect")
} else {
print("Not running on Connect")
}
这里不使用 isTRUE
是安全的,因为 Sys.getenv
总是 return 长度为 1 的字符串;如果未设置,它 returns ""
(仍然是长度 1,只是空)。 (如果您仍然喜欢,可以使用 isTRUE
。)
如果您对 RSC 环境中的其他设置感到好奇,请参阅我的 显示环境变量(以及其他)的快速应用程序。
我有一些内容(用 R 语言编写)部署到 RStudio Connect 实例。
我希望能够做类似的事情:
if (isTRUE(is_connect)) {
print("Running on Connect")
} else {
print("Not running on Connect")
}
也就是说,我想让我的代码检测它是否来自 RStudio Connect 运行,并根据其环境表现不同。
如何使用 R 代码检测它是否在 RStudio Connect 上 运行?
自 v1.8.8(2021 年 4 月)起,RStudio Connect 已将 CONNECT_SERVER
环境变量定义为所有内容运行时 (source)。
您可以使用此环境变量的存在来检测您是否 运行 连接:
is_connect = function() {
Sys.getenv("CONNECT_SERVER") != ""
}
然后您可以在您的代码中使用它:
if (isTRUE(is_connect())) {
print("Running on Connect")
} else {
print("Not running on Connect")
}
当然这个解决方案并不是万无一失的:没有什么可以阻止我在我的本地机器上定义一个 CONNECT_SERVER
环境变量,但是只要你不这样做你就会没事...
我一直在使用的替代方法是 R_CONFIG_ACTIVE
envvar。来自 https://docs.rstudio.com/connect/admin/process-management/#using-the-config-package、
By default, R processes launched by RStudio Connect set
R_CONFIG_ACTIVE
torsconnect
.
这个这个,有人可能会用到
if (Sys.getenv("R_CONFIG_ACTIVE") == "rsconnect") {
print("Running on Connect")
} else {
print("Not running on Connect")
}
这里不使用 isTRUE
是安全的,因为 Sys.getenv
总是 return 长度为 1 的字符串;如果未设置,它 returns ""
(仍然是长度 1,只是空)。 (如果您仍然喜欢,可以使用 isTRUE
。)
如果您对 RSC 环境中的其他设置感到好奇,请参阅我的