run_app()
function
When launching the app, you might have noticed that the
dev/run_dev.R
function calls run_app()
, which
has the following structure:
run_app <- function(...) {
with_golem_options(
app = shinyApp(
ui = app_ui,
server = app_server
),
golem_opts = list(...)
)
}
This function might look a little bit weird, but there’s a long story behind it, and you can read more about it there.
But long story short, this combination of
with_golem_options
&
golem_opts = list(...)
allows you to pass arguments to the
function to be used inside the application, from UI or from server side,
which you can get with get_golem_options()
.
run_app(this = "that")
# And in the app
this <- get_golem_options("this")
The idea is to provide more flexibility for deployment on each platform you want to run your app on.
{golem}
The dev/03_deploy.R
file contains functions for
deployment on various platforms.
golem::add_positconnect_file()
golem::add_shinyappsio_file()
golem::add_shinyserver_file()
For Git backed deployment on Posit (for details
a manifest.json
file is required which can be added (or
updated) via:
rsconnect::writeManifest()
{renv}
# If you want to deploy via a generic Dockerfile
golem::add_dockerfile()
# If you want to deploy to ShinyProxy
golem::add_dockerfile_shinyproxy()
# If you want to deploy to Heroku
golem::add_dockerfile_heroku()
{renv}
- CASE 1 : you didn’t use renv during
development process
this functions will create a “deploy” folder containing :
deploy/
+-- Dockerfile
+-- Dockerfile_base
+-- yourgolem_0.0.0.9000.tar.gz
+-- README
\-- renv.lock.prod
then follow the README
file.
# If you want to deploy via a generic Dockerfile
golem::add_dockerfile_with_renv(output_dir = "deploy")
# If you want to deploy to ShinyProxy
golem::add_dockerfile_with_renv_shinyproxy(output_dir = "deploy")
If you would like to use renv during development, you
can init a renv.lock
file with
attachment::create_renv_for_dev(dev_pkg = c(
"renv",
"devtools",
"roxygen2",
"usethis",
"pkgload",
"testthat",
"remotes",
"covr",
"attachment",
"pak",
"dockerfiler",
"golem"
))
and activate renv with
renv::activate()
{renv}
- CASE 2: you already have a
renv.lock
file for your project
# If you want to deploy via a generic Dockerfile
golem::add_dockerfile_with_renv(output_dir = "deploy", lockfile = "renv.lock")
# If you want to deploy to ShinyProxy
golem::add_dockerfile_with_renv_shinyproxy(output_dir = "deploy", lockfile = "renv.lock")
this functions will create a “deploy” folder containing :
deploy/
+-- Dockerfile
+-- Dockerfile_base
+-- yourgolem_0.0.0.9000.tar.gz
+-- README
\-- renv.lock.prod
then follow the README
file.