我有一个R脚本,一个特定的Shiny应用程序,它位于网络驱动器上。有多台计算机需要能够运行此应用程序,因此可能需要多个人同时运行它。
目前,我只是通过容纳多个重复的Shiny应用程序来解决问题,并让每台计算机都能访问一个独特的副本。但是,随着用户数量的增加,跟上这一点变得越来越困难。
有没有办法让多台计算机同时访问同一个R脚本,并且只要他们需要多长时间就打开一个会话?
答案 0 :(得分:1)
如果您使用R包路线,并且:
devtools::install_git("path/to/package/git/repo")
然后您可以将这些行添加到您的包的.onload()
方法(documented here和此处:?.onLoad
):
# Check if the package is up to date
pd <- packageDescription(pkgname)
out_of_date_message_template <-
'Your copy of package %s is not up to date.\nUse devtools::install_git("%s") to update this package\n'
if(identical(pd$RemoteType,"git")){
try({
# get the hash of the remote repo
out_file <- tempfile()
on.exit(unlink(out_file))
failed <- system2("git",sprintf('ls-remote "%s"',pd$RemoteUrl),stdout = out_file)
if(failed)
return() # failed to get the git repo hash
remotes <- readLines(out_file)
if(!identical(pd$RemoteSha,gsub("\t.*","",remotes[1])))
packageStartupMessage(
sprintf(out_of_date_message_template,
pkgname,
gsub("\\\\","\\\\\\\\",pd$RemoteUrl)))
})
}
然后当您将更新推送到您的网络git repo时,具有过期代码的用户在致电library(my_app)
Your copy of package my_app is not up to date.
Use devtools::install_git("path\\to\\package\\git\\repo") to update this package
答案 1 :(得分:0)
在本地计算机上安装git后,在网络驱动器上初始化repo,如下所示:
cd my/network/shiny-app
git init
git add .
git commit -m "initial commit"
然后在每台计算机上
cd some/place/nice
git clone my/network/shiny-app
cd shiny-app
ls # hey look- all my files are now in this directory!
当您决定更新代码并需要将其提取到每台计算机时,互联网上有很多很好的git教程。