Skip to main content

Work library for Forge

Project description

A single command to run everything you need for local Django development.

Forge work command example

The following processes will run simultaneously (some will only run if they are detected as available):

It also comes with debugging tools to make local debugging easier with VS Code.

Installation

Django + Forge Quickstart

If you use the Forge Quickstart, everything you need will be ready and available as forge work.

Install for existing Django projects

First, install forge-work from PyPI:

pip install forge-work

Then add it to your INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    ...
    "forgework",
]

Now instead of using the basic manage.py runserver (and a bunch of commands before and during that process), you can simply do:

python manage.py work

Development processes

Runserver

The key process here is still manage.py runserver. But, before that runs, it will also wait for the database to be available and run manage.py migrate.

forge-db

If forge-db is installed, it will automatically start and show the logs of the running database container.

forge-tailwind

If forge-tailwind is installed, it will automatically run the Tailwind compile --watch process.

package.json

If a package.json file is found and contains a watch script, it will automatically run. This is an easy place to run your own custom JavaScript watch process.

Stripe

If a STRIPE_WEBHOOK_PATH env variable is set then this will add a STRIPE_WEBHOOK_SECRET to .env (using stripe listen --print-secret) and it will then run stripe listen --forward-to <runserver:port/stripe-webhook-path>.

Ngrok

If an NGROK_SUBDOMAIN env variable is set then this will run ngrok http <runserver_port> --subdomain <subdomain>. Note that ngrok will need to be installed on your system already (however you prefer to do that).

Debugging

Since forge work runs multiple processes at once, the regular pdb debuggers can be hard to use. Instead, we include microsoft/debugpy and an attach function to make it even easier to use VS Code's debugger.

First, import and run the debug.attach() function:

class HomeView(TemplateView):
    template_name = "home.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Make sure the debugger is attached (will need to be if runserver reloads)
        from forgework import debug; debug.attach()

        # Add a breakpoint (or use the gutter in VSCode to add one)
        breakpoint()

        return context

When you load the page, you'll see "Waiting for debugger to attach...".

Add a new VS Code debug configuration (using localhost and port 5768) by saving this to .vscode/launch.json or using the GUI:

// .vscode/launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Forge: Attach to Django",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 5678
            },
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "."
                }
            ],
            "justMyCode": true,
            "django": true
        }
    ]
}

Then in the "Run and Debug" tab, you can click the green arrow next to "Forge: Attach to Django" to start the debugger.

In your terminal is should tell you it was attached, and when you hit a breakpoint you'll see the debugger information in VS Code. If Django's runserver reloads, you'll be prompted to reattach by clicking the green arrow again.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

forge-work-0.4.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

forge_work-0.4.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file forge-work-0.4.0.tar.gz.

File metadata

  • Download URL: forge-work-0.4.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.10.6 Linux/5.15.0-1019-azure

File hashes

Hashes for forge-work-0.4.0.tar.gz
Algorithm Hash digest
SHA256 5350cfc4c417fdd15ba8cfd3672f13c2ce87c4785c07e9cc61ee0a8097b9cdd9
MD5 a22ad190263e0e4cd8d0e34b8d473635
BLAKE2b-256 3919cd4f7fea61891c7d2c204ba2b7dae13b822c9c10f0740a8146c00aa79267

See more details on using hashes here.

File details

Details for the file forge_work-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: forge_work-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.10.6 Linux/5.15.0-1019-azure

File hashes

Hashes for forge_work-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 507b063a9b8752237a3427c1555c6303d0f538b52abeac1d68c3c9326388030f
MD5 fa8f4c451881286c9c1e07e37fc099f8
BLAKE2b-256 4b68e9416e51b0149d03ca203650be36432b99b92edd7dad29f9bda981507c10

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page