diff --git a/CHANGELOG.md b/CHANGELOG.md index c279514ba8..039854ef94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Every user-facing change should have an entry in this changelog. Please respect --> ## Unreleased +- [Feature] Add PYTHONBREAKPOINT as an exposed config variable for custom debugging.(by @Carlos-Muniz) ## v14.0.0 (2022-06-09) diff --git a/docs/dev.rst b/docs/dev.rst index d552589eb9..38dc8591cb 100644 --- a/docs/dev.rst +++ b/docs/dev.rst @@ -161,7 +161,7 @@ Tutor makes it easy to create a bind-mount from an existing container. First, co tutor dev bindmount lms /openedx/venv -This command recursively copies the contents of the ``/opendedx/venv`` directory to ``$(tutor config printroot)/volumes/venv``. The code of any Python dependency can then be edited -- for instance, you can then add a ``import ipdb; ipdb.set_trace()`` statement for step-by-step debugging, or implement a custom feature. +This command recursively copies the contents of the ``/opendedx/venv`` directory to ``$(tutor config printroot)/volumes/venv``. The code of any Python dependency can then be edited -- for instance, you can then add a ``breakpoint()`` statement for step-by-step debugging, or implement a custom feature. Then, bind-mount the directory back in the container with the ``--mount`` option:: @@ -238,10 +238,12 @@ Then, you should run the following commands:: # Rebuild static assets openedx-assets build --env=dev -After running all these commands, your edx-platform repository will be ready for local development. To debug a local edx-platform repository, you can then add a ``import ipdb; ipdb.set_trace()`` breakpoint anywhere in your code and run:: +After running all these commands, your edx-platform repository will be ready for local development. To debug a local edx-platform repository, you can then add a `python breakpoint `__ with ``breakpoint()`` anywhere in your code and run:: tutor dev start --mount=/path/to/edx-platform lms +``PYTHONBREAKPOINT`` can be modified in the `config.yml` in order to use a custom debugger. The default debugger is ``pdb.set_trace``. + If LMS isn't running, this will start it in your terminal. If an LMS container is already running background, this command will stop it, recreate it, and attach your terminal to it. Later, to detach your terminal without stopping the container, just hit ``Ctrl+z``. diff --git a/tutor/templates/build/openedx/Dockerfile b/tutor/templates/build/openedx/Dockerfile index d3db2817e1..d95266db34 100644 --- a/tutor/templates/build/openedx/Dockerfile +++ b/tutor/templates/build/openedx/Dockerfile @@ -230,6 +230,9 @@ USER app RUN pip install -r requirements/edx/development.txt RUN pip install ipdb==0.13.4 ipython==7.27.0 +# Add PYTHONBREAKPOINT from config.yml +ENV PYTHONBREAKPOINT={{ PYTHONBREAKPOINT }} + # Recompile static assets: in development mode all static assets are stored in edx-platform, # and the location of these files is stored in webpack-stats.json. If we don't recompile # static assets, then production assets will be served instead. diff --git a/tutor/templates/config/defaults.yml b/tutor/templates/config/defaults.yml index 359d71b50b..ac926d418f 100644 --- a/tutor/templates/config/defaults.yml +++ b/tutor/templates/config/defaults.yml @@ -57,6 +57,7 @@ MYSQL_ROOT_USERNAME: "root" NPM_REGISTRY: "https://registry.npmjs.org/" PLATFORM_NAME: "My Open edX" PREVIEW_LMS_HOST: "preview.{{ LMS_HOST }}" +PYTHONBREAKPOINT: REDIS_HOST: "redis" REDIS_PORT: 6379 REDIS_USERNAME: ""