The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

c_deploy

Colin Fay

2024-08-27

About the 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.

Deploying Apps with {golem}

The dev/03_deploy.R file contains functions for deployment on various platforms.

Posit Products

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

Docker

Without using {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()

Using {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()

Using {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.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.