The entrypoint for a Rhino application.
Your app.R should contain nothing but a call to rhino::app().
Value
An object representing the app (can be passed to shiny::runApp()).
Details
This function is a wrapper around shiny::shinyApp().
It reads rhino.yml and performs some configuration steps (logger, static files, box modules).
You can run a Rhino application in typical fashion using shiny::runApp().
Rhino will load the app/main.R file as a box module (box::use(app/main)).
It should export two functions which take a single id argument -
the ui and server of your top-level Shiny module.
Legacy entrypoint
It is possible to specify a different way to load your application
using the legacy_entrypoint option in rhino.yml:
app_dir: Rhino will run the app usingshiny::shinyAppDir("app").source: Rhino willsource("app/main.R"). This file should define the top-leveluiandserverobjects to be passed toshinyApp().box_top_level: Rhino will loadapp/main.Ras a box module (as it does by default), but the exporteduiandserverobjects will be considered as top-level.
The legacy_entrypoint setting is useful when migrating an existing Shiny application to Rhino.
It is recommended to transform your application step by step:
With
app_diryou should be able to run your application right away (just put the files in theappdirectory).With
sourcesetting your application structure must be brought closer to Rhino, but you can still uselibrary()andsource()functions.With
box_top_levelyou can be confident that the whole app is properly modularized, as box modules can only load other box modules (library()andsource()won't work).The last step is to remove the
legacy_entrypointsetting completely. Compared tobox_top_levelyou'll need to make your top-leveluiandserverinto a Shiny module (functions taking a singleidargument).