diff --git a/frameworks/cakephp/3.yaml b/frameworks/cakephp/3.yaml index 5631ffa..9feafc8 100644 --- a/frameworks/cakephp/3.yaml +++ b/frameworks/cakephp/3.yaml @@ -44,6 +44,9 @@ env: composer: auto npm: auto console: bin/cake.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache clear_all logs: - path: logs/*.log @@ -78,3 +81,6 @@ commands: description: Drop the cached database schema output: silent icon: refresh + +doctor: + migrate_command: migrate diff --git a/frameworks/cakephp/4.yaml b/frameworks/cakephp/4.yaml index f170aa1..dec14ab 100644 --- a/frameworks/cakephp/4.yaml +++ b/frameworks/cakephp/4.yaml @@ -44,6 +44,9 @@ env: composer: auto npm: auto console: bin/cake.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache clear_all logs: - path: logs/*.log @@ -78,3 +81,6 @@ commands: description: Drop the cached database schema output: silent icon: refresh + +doctor: + migrate_command: migrate diff --git a/frameworks/cakephp/5.yaml b/frameworks/cakephp/5.yaml index 1a63a84..9d6eb62 100644 --- a/frameworks/cakephp/5.yaml +++ b/frameworks/cakephp/5.yaml @@ -44,6 +44,9 @@ env: composer: auto npm: auto console: bin/cake.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache clear_all workers: queue: @@ -89,3 +92,6 @@ commands: description: Drop the cached database schema output: silent icon: refresh + +doctor: + migrate_command: migrate diff --git a/frameworks/codeigniter/4.yaml b/frameworks/codeigniter/4.yaml index f03c3ad..d864767 100644 --- a/frameworks/codeigniter/4.yaml +++ b/frameworks/codeigniter/4.yaml @@ -64,6 +64,9 @@ env: composer: auto npm: auto console: spark +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:clear workers: queue: @@ -132,3 +135,6 @@ commands: icon: trash check: composer: codeigniter4/queue + +doctor: + migrate_command: migrate diff --git a/frameworks/drupal/10.yaml b/frameworks/drupal/10.yaml index 01c08d3..3cbb29b 100644 --- a/frameworks/drupal/10.yaml +++ b/frameworks/drupal/10.yaml @@ -7,59 +7,57 @@ create: composer create-project drupal/recommended-project php: min: "8.1" max: "8.4" + cli_ini: + memory_limit: 512M detect: - composer: drupal/core-recommended - composer: drupal/core env: + # A binary older than the php-vars format reads these three and behaves as it + # always has, writing constants into settings.php that Drupal ignores. file: .env format: dotenv fallback_file: web/sites/default/settings.php fallback_format: php-const + # A binary that knows the field writes the array Drupal actually reads. + app_file: web/sites/default/settings.php + app_format: php-vars + url_key: none services: mysql: detect: - - key: DB_DRIVER - value_prefix: mysql - - key: database + - key: databases.default.default.driver value_prefix: mysql vars: - - DB_DRIVER=mysql - - DB_HOST=lerd-mysql - - DB_PORT=3306 - - DB_NAME={{site}} - - DB_USER=root - - DB_PASSWORD=lerd + - databases.default.default.driver=mysql + - databases.default.default.host=lerd-mysql + - databases.default.default.port=3306 + - databases.default.default.database={{site}} + - databases.default.default.username=root + - databases.default.default.password=lerd + - databases.default.default.namespace=Drupal\mysql\Driver\Database\mysql + - databases.default.default.autoload=core/modules/mysql/src/Driver/Database/mysql/ postgres: detect: - - key: DB_DRIVER - value_prefix: pgsql - - key: database + - key: databases.default.default.driver value_prefix: pgsql vars: - - DB_DRIVER=pgsql - - DB_HOST=lerd-postgres - - DB_PORT=5432 - - DB_NAME={{site}} - - DB_USER=postgres - - DB_PASSWORD=lerd - redis: - detect: - - key: REDIS_HOST - vars: - - REDIS_HOST=lerd-redis - - REDIS_PORT=6379 - mailpit: - detect: - - key: SMTP_HOST - vars: - - SMTP_HOST=lerd-mailpit - - SMTP_PORT=1025 - + - databases.default.default.driver=pgsql + - databases.default.default.host=lerd-postgres + - databases.default.default.port=5432 + - databases.default.default.database={{site}} + - databases.default.default.username=postgres + - databases.default.default.password=lerd + - databases.default.default.namespace=Drupal\pgsql\Driver\Database\pgsql + - databases.default.default.autoload=core/modules/pgsql/src/Driver/Database/pgsql/ composer: auto npm: false console: vendor/drush/drush/drush.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cr workers: cron: @@ -156,3 +154,12 @@ commands: icon: arrow-down check: composer: drush/drush + +doctor: + migrate_command: updb + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false diff --git a/frameworks/drupal/11.yaml b/frameworks/drupal/11.yaml index 9cad8ca..ddbb21e 100644 --- a/frameworks/drupal/11.yaml +++ b/frameworks/drupal/11.yaml @@ -7,59 +7,57 @@ create: composer create-project drupal/recommended-project php: min: "8.3" max: "8.5" + cli_ini: + memory_limit: 512M detect: - composer: drupal/core-recommended - composer: drupal/core env: + # A binary older than the php-vars format reads these three and behaves as it + # always has, writing constants into settings.php that Drupal ignores. file: .env format: dotenv fallback_file: web/sites/default/settings.php fallback_format: php-const + # A binary that knows the field writes the array Drupal actually reads. + app_file: web/sites/default/settings.php + app_format: php-vars + url_key: none services: mysql: detect: - - key: DB_DRIVER - value_prefix: mysql - - key: database + - key: databases.default.default.driver value_prefix: mysql vars: - - DB_DRIVER=mysql - - DB_HOST=lerd-mysql - - DB_PORT=3306 - - DB_NAME={{site}} - - DB_USER=root - - DB_PASSWORD=lerd + - databases.default.default.driver=mysql + - databases.default.default.host=lerd-mysql + - databases.default.default.port=3306 + - databases.default.default.database={{site}} + - databases.default.default.username=root + - databases.default.default.password=lerd + - databases.default.default.namespace=Drupal\mysql\Driver\Database\mysql + - databases.default.default.autoload=core/modules/mysql/src/Driver/Database/mysql/ postgres: detect: - - key: DB_DRIVER - value_prefix: pgsql - - key: database + - key: databases.default.default.driver value_prefix: pgsql vars: - - DB_DRIVER=pgsql - - DB_HOST=lerd-postgres - - DB_PORT=5432 - - DB_NAME={{site}} - - DB_USER=postgres - - DB_PASSWORD=lerd - redis: - detect: - - key: REDIS_HOST - vars: - - REDIS_HOST=lerd-redis - - REDIS_PORT=6379 - mailpit: - detect: - - key: SMTP_HOST - vars: - - SMTP_HOST=lerd-mailpit - - SMTP_PORT=1025 - + - databases.default.default.driver=pgsql + - databases.default.default.host=lerd-postgres + - databases.default.default.port=5432 + - databases.default.default.database={{site}} + - databases.default.default.username=postgres + - databases.default.default.password=lerd + - databases.default.default.namespace=Drupal\pgsql\Driver\Database\pgsql + - databases.default.default.autoload=core/modules/pgsql/src/Driver/Database/pgsql/ composer: auto npm: false console: vendor/drush/drush/drush.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cr workers: cron: @@ -156,3 +154,12 @@ commands: icon: arrow-down check: composer: drush/drush + +doctor: + migrate_command: updb + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false diff --git a/frameworks/drupal/8.yaml b/frameworks/drupal/8.yaml index 2733290..5b1bf85 100644 --- a/frameworks/drupal/8.yaml +++ b/frameworks/drupal/8.yaml @@ -7,59 +7,53 @@ create: composer create-project drupal/recommended-project php: min: "7.2" max: "7.4" + cli_ini: + memory_limit: 512M detect: - composer: drupal/core-recommended - composer: drupal/core env: + # A binary older than the php-vars format reads these three and behaves as it + # always has, writing constants into settings.php that Drupal ignores. file: .env format: dotenv fallback_file: web/sites/default/settings.php fallback_format: php-const + # A binary that knows the field writes the array Drupal actually reads. + app_file: web/sites/default/settings.php + app_format: php-vars + url_key: none services: mysql: detect: - - key: DB_DRIVER - value_prefix: mysql - - key: database + - key: databases.default.default.driver value_prefix: mysql vars: - - DB_DRIVER=mysql - - DB_HOST=lerd-mysql - - DB_PORT=3306 - - DB_NAME={{site}} - - DB_USER=root - - DB_PASSWORD=lerd + - databases.default.default.driver=mysql + - databases.default.default.host=lerd-mysql + - databases.default.default.port=3306 + - databases.default.default.database={{site}} + - databases.default.default.username=root + - databases.default.default.password=lerd postgres: detect: - - key: DB_DRIVER - value_prefix: pgsql - - key: database + - key: databases.default.default.driver value_prefix: pgsql vars: - - DB_DRIVER=pgsql - - DB_HOST=lerd-postgres - - DB_PORT=5432 - - DB_NAME={{site}} - - DB_USER=postgres - - DB_PASSWORD=lerd - redis: - detect: - - key: REDIS_HOST - vars: - - REDIS_HOST=lerd-redis - - REDIS_PORT=6379 - mailpit: - detect: - - key: SMTP_HOST - vars: - - SMTP_HOST=lerd-mailpit - - SMTP_PORT=1025 - + - databases.default.default.driver=pgsql + - databases.default.default.host=lerd-postgres + - databases.default.default.port=5432 + - databases.default.default.database={{site}} + - databases.default.default.username=postgres + - databases.default.default.password=lerd composer: auto npm: false console: vendor/drush/drush/drush.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cr workers: cron: @@ -156,3 +150,12 @@ commands: icon: arrow-down check: composer: drush/drush + +doctor: + migrate_command: updb + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false diff --git a/frameworks/drupal/9.yaml b/frameworks/drupal/9.yaml index f3c4bf1..1b8f9d7 100644 --- a/frameworks/drupal/9.yaml +++ b/frameworks/drupal/9.yaml @@ -7,59 +7,53 @@ create: composer create-project drupal/recommended-project php: min: "7.3" max: "8.1" + cli_ini: + memory_limit: 512M detect: - composer: drupal/core-recommended - composer: drupal/core env: + # A binary older than the php-vars format reads these three and behaves as it + # always has, writing constants into settings.php that Drupal ignores. file: .env format: dotenv fallback_file: web/sites/default/settings.php fallback_format: php-const + # A binary that knows the field writes the array Drupal actually reads. + app_file: web/sites/default/settings.php + app_format: php-vars + url_key: none services: mysql: detect: - - key: DB_DRIVER - value_prefix: mysql - - key: database + - key: databases.default.default.driver value_prefix: mysql vars: - - DB_DRIVER=mysql - - DB_HOST=lerd-mysql - - DB_PORT=3306 - - DB_NAME={{site}} - - DB_USER=root - - DB_PASSWORD=lerd + - databases.default.default.driver=mysql + - databases.default.default.host=lerd-mysql + - databases.default.default.port=3306 + - databases.default.default.database={{site}} + - databases.default.default.username=root + - databases.default.default.password=lerd postgres: detect: - - key: DB_DRIVER - value_prefix: pgsql - - key: database + - key: databases.default.default.driver value_prefix: pgsql vars: - - DB_DRIVER=pgsql - - DB_HOST=lerd-postgres - - DB_PORT=5432 - - DB_NAME={{site}} - - DB_USER=postgres - - DB_PASSWORD=lerd - redis: - detect: - - key: REDIS_HOST - vars: - - REDIS_HOST=lerd-redis - - REDIS_PORT=6379 - mailpit: - detect: - - key: SMTP_HOST - vars: - - SMTP_HOST=lerd-mailpit - - SMTP_PORT=1025 - + - databases.default.default.driver=pgsql + - databases.default.default.host=lerd-postgres + - databases.default.default.port=5432 + - databases.default.default.database={{site}} + - databases.default.default.username=postgres + - databases.default.default.password=lerd composer: auto npm: false console: vendor/drush/drush/drush.php +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cr workers: cron: @@ -156,3 +150,12 @@ commands: icon: arrow-down check: composer: drush/drush + +doctor: + migrate_command: updb + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false diff --git a/frameworks/laravel/10.yaml b/frameworks/laravel/10.yaml index 8f0e449..9592e8e 100644 --- a/frameworks/laravel/10.yaml +++ b/frameworks/laravel/10.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -169,6 +172,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/11.yaml b/frameworks/laravel/11.yaml index b66e81f..7f0f431 100644 --- a/frameworks/laravel/11.yaml +++ b/frameworks/laravel/11.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -190,6 +193,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/12.yaml b/frameworks/laravel/12.yaml index d3f7667..16e057c 100644 --- a/frameworks/laravel/12.yaml +++ b/frameworks/laravel/12.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -190,6 +193,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/13.yaml b/frameworks/laravel/13.yaml index 8cbd7a1..b68749a 100644 --- a/frameworks/laravel/13.yaml +++ b/frameworks/laravel/13.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -190,6 +193,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/6.yaml b/frameworks/laravel/6.yaml index d6ac0f4..93284a4 100644 --- a/frameworks/laravel/6.yaml +++ b/frameworks/laravel/6.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -169,6 +172,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/7.yaml b/frameworks/laravel/7.yaml index 1e38b75..4fbd69f 100644 --- a/frameworks/laravel/7.yaml +++ b/frameworks/laravel/7.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -169,6 +172,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/8.yaml b/frameworks/laravel/8.yaml index 659d92b..89ab511 100644 --- a/frameworks/laravel/8.yaml +++ b/frameworks/laravel/8.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -169,6 +172,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/laravel/9.yaml b/frameworks/laravel/9.yaml index bc97411..10ffb17 100644 --- a/frameworks/laravel/9.yaml +++ b/frameworks/laravel/9.yaml @@ -91,6 +91,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: @@ -169,6 +172,7 @@ commands: icon: link doctor: + migrate_command: migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/magento/2.yaml b/frameworks/magento/2.yaml index ef8bcd3..1888a70 100644 --- a/frameworks/magento/2.yaml +++ b/frameworks/magento/2.yaml @@ -65,6 +65,9 @@ requires: composer: auto npm: false console: bin/magento +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:flush # A worktree gets its own base_url in env.php, which changes the config hash # Magento stores in the database and refuses to serve without re-importing. That @@ -261,3 +264,9 @@ doctor: severity: warn fix: deploy:mode:developer detail: "The store is in production mode, so template changes need a static content deploy to show up. Switch to developer mode." + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false diff --git a/frameworks/statamic/3.yaml b/frameworks/statamic/3.yaml index 36b91d9..26a0b5d 100644 --- a/frameworks/statamic/3.yaml +++ b/frameworks/statamic/3.yaml @@ -62,6 +62,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: diff --git a/frameworks/statamic/4.yaml b/frameworks/statamic/4.yaml index cb6114c..9215280 100644 --- a/frameworks/statamic/4.yaml +++ b/frameworks/statamic/4.yaml @@ -62,6 +62,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: diff --git a/frameworks/statamic/5.yaml b/frameworks/statamic/5.yaml index 2589787..2bfdd7f 100644 --- a/frameworks/statamic/5.yaml +++ b/frameworks/statamic/5.yaml @@ -62,6 +62,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: diff --git a/frameworks/statamic/6.yaml b/frameworks/statamic/6.yaml index 4fd9ac9..62daed1 100644 --- a/frameworks/statamic/6.yaml +++ b/frameworks/statamic/6.yaml @@ -62,6 +62,9 @@ env: composer: auto npm: auto console: artisan +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: optimize:clear workers: queue: diff --git a/frameworks/symfony/4.yaml b/frameworks/symfony/4.yaml index a42e523..0660bf9 100644 --- a/frameworks/symfony/4.yaml +++ b/frameworks/symfony/4.yaml @@ -60,6 +60,9 @@ env: composer: auto npm: auto console: bin/console +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:clear workers: messenger: @@ -122,6 +125,7 @@ commands: composer: doctrine/doctrine-fixtures-bundle doctor: + migrate_command: doctrine:migrations:migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/symfony/5.yaml b/frameworks/symfony/5.yaml index 11f8b1a..e3fde36 100644 --- a/frameworks/symfony/5.yaml +++ b/frameworks/symfony/5.yaml @@ -60,6 +60,9 @@ env: composer: auto npm: auto console: bin/console +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:clear workers: messenger: @@ -122,6 +125,7 @@ commands: composer: doctrine/doctrine-fixtures-bundle doctor: + migrate_command: doctrine:migrations:migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/symfony/6.yaml b/frameworks/symfony/6.yaml index 2f9d3a5..735f16d 100644 --- a/frameworks/symfony/6.yaml +++ b/frameworks/symfony/6.yaml @@ -60,6 +60,9 @@ env: composer: auto npm: auto console: bin/console +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:clear workers: messenger: @@ -122,6 +125,7 @@ commands: composer: doctrine/doctrine-fixtures-bundle doctor: + migrate_command: doctrine:migrations:migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/symfony/7.yaml b/frameworks/symfony/7.yaml index a801de1..8b9c5e4 100644 --- a/frameworks/symfony/7.yaml +++ b/frameworks/symfony/7.yaml @@ -60,6 +60,9 @@ env: composer: auto npm: auto console: bin/console +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:clear workers: messenger: @@ -122,6 +125,7 @@ commands: composer: doctrine/doctrine-fixtures-bundle doctor: + migrate_command: doctrine:migrations:migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/symfony/8.yaml b/frameworks/symfony/8.yaml index 0606f1f..8a1f479 100644 --- a/frameworks/symfony/8.yaml +++ b/frameworks/symfony/8.yaml @@ -60,6 +60,9 @@ env: composer: auto npm: auto console: bin/console +# Run after a connection change: the compiled container is built +# against the old database and answers every request with an error. +cache_command: cache:clear workers: messenger: @@ -128,6 +131,7 @@ commands: composer: doctrine/doctrine-fixtures-bundle doctor: + migrate_command: doctrine:migrations:migrate checks: - name: app_debug type: env_combo diff --git a/frameworks/tempest/3.yaml b/frameworks/tempest/3.yaml index 88062b6..1c5dfee 100644 --- a/frameworks/tempest/3.yaml +++ b/frameworks/tempest/3.yaml @@ -104,3 +104,6 @@ commands: command: php tempest cache:clear --force output: silent icon: broom + +doctor: + migrate_command: migrate diff --git a/frameworks/wordpress/5.yaml b/frameworks/wordpress/5.yaml index c39738d..36d5571 100644 --- a/frameworks/wordpress/5.yaml +++ b/frameworks/wordpress/5.yaml @@ -58,3 +58,9 @@ commands: description: Dump the database to a SQL file in the project directory output: text icon: database + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false diff --git a/frameworks/wordpress/6.yaml b/frameworks/wordpress/6.yaml index 02ec2cf..aff080a 100644 --- a/frameworks/wordpress/6.yaml +++ b/frameworks/wordpress/6.yaml @@ -58,3 +58,9 @@ commands: description: Dump the database to a SQL file in the project directory output: text icon: database + +notifications: + # The entity, config and cache layers issue the repeats during an ordinary + # request, so the warning names a loop inside the framework rather than + # anything a site's own code does. + nplusone: false