Skip to main content

Modern package workflow

Ruoom plugins are installed into the same Python environment as Core. Do not clone a modern plugin into Core’s plugins directory and do not add it manually to INSTALLED_APPS.
  1. Download the wheel supplied by Ruoom Code Lab or the plugin’s authorized GitHub release.
  2. Activate the virtual environment used by Core.
  3. Install the wheel from its local path.
  4. Set RUOOM_PLUGINS in .env to a comma-separated list of installed plugin identifiers.
  5. Apply migrations, collect production static assets, and run Django checks.
  6. Restart the application process after changing installed packages or RUOOM_PLUGINS.
Core registers enabled plugins automatically. You should not edit ruoom/settings.py for a normal installation.

Available package identifiers

Install dependencies before dependents. For example:
Treat wheels and customer source ZIPs as licensed artifacts. Install them only from Ruoom Code Lab or an authorized private release; they are not published to public PyPI.

Upgrade or remove a plugin

Install a newer wheel with --upgrade, then run migrations and checks:
Before uninstalling, remove the identifier from RUOOM_PLUGINS, restart the application, and then uninstall its distribution. Removing a package does not reverse or delete its database migrations.

Booking 1.2.2 exception

Booking 1.2.2 is distributed as booking-plugin-1.2.2-customer.zip, not as a wheel. It retains the legacy flat source layout, so the no-copy package workflow above does not apply yet. Follow the Booking quickstart and do not attempt to install its customer ZIP with pip.

Troubleshooting

  • Unknown Ruoom plugin: use an identifier listed in Core’s plugin registry.
  • Plugin is absent from the UI: confirm the wheel is installed in the same interpreter used by manage.py, its identifier is in RUOOM_PLUGINS, and the process was restarted.
  • ModuleNotFoundError: reinstall the correct wheel and check python -m pip show <distribution-name>.
  • Migration errors: install and enable required plugins first, then run the unqualified python manage.py migrate so Django orders dependencies.