Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.db-migraterc at the root of the project is being ignored #759

Open
1 of 3 tasks
flisboac opened this issue Oct 20, 2021 · 0 comments
Open
1 of 3 tasks

.db-migraterc at the root of the project is being ignored #759

flisboac opened this issue Oct 20, 2021 · 0 comments

Comments

@flisboac
Copy link

flisboac commented Oct 20, 2021

I'm submitting a...

  • Bug report
  • Feature request
  • Question

Current behavior

It seems db-migrate is completely ignoring the project's .db-migraterc. What am I doing wrong?

Based on what was discussed in #451 and #698: Is this feature really working? If it is, what are the supported properties for .db-migraterc?

Also: how does it merge .db-migraterc and database.json, exactly? The documentation doesn't enter in much details about that, so I just assumed anything that I put in database.json, or in any of the environments, could be put in .db-migraterc to be used as defaults.

Expected behavior

It should load all configurations in .db-migraterc, and merge with those in configFile (or database.json, if it's not specified).

Minimal reproduction of the problem with instructions

Follows my configuration:

flisboac@REDACTED:~/workspaces/REDACTED$ npm list db-migrate db-migrate-mysql
[email protected] /home/flisboac/REDACTED
├── [email protected] 
└── [email protected]

flisboac@NOTE-BR-101:~/workspaces/REDACTED$ tree -a -L 1 --dirsfirst --si "$(pwd)"
/home/flisboac/REDACTED
├── [4.1k]  .git
├── [4.1k]  .husky
├── [4.1k]  .vscode
├── [4.1k]  dist
├── [4.1k]  docs
├── [4.1k]  etc
├── [4.1k]  local
├── [ 20k]  node_modules
├── [4.1k]  scripts
├── [4.1k]  src
├── [ 178]  .db-migraterc
├── [ 369]  .editorconfig
├── [3.6k]  .env.local
├── [ 929]  .env.local.sample
├── [ 119]  .eslintignore
├── [ 920]  .eslintrc.js
├── [  19]  .gitattributes
├── [ 679]  .gitignore
├── [  99]  .prettierrc
├── [ 600]  .release-it.js
├── [ 663]  Dockerfile
├── [  91]  README.md
├── [2.0k]  commitlint.config.js
├── [ 687]  database.json
├── [1.5k]  docker-compose.yml
├── [ 138]  lint-staged.config.js
├── [289k]  package-lock.json
├── [3.1k]  package.json
└── [ 675]  tsconfig.json

Contents of .db-migraterc:

{
  "defaultEnv": { "ENV": "APP_ENV" },
  "migrationsDir": "src/migrations",
  "driver": "mysql",
  "multipleStatements": true,
  "table": "migration_history",
  "state": "migration_state"
}

Contents of database.json:

{
  "local": {
    "host": { "ENV": "APP_DB_MASTER_HOST" },
    "port": { "ENV": "APP_DB_MASTER_PORT" },
    "username": "root",
    "password": { "ENV": "APP_DB_ROOT_PASS" },
    "database": { "ENV": "APP_DB_NAME" }
  }
}

Contents of .env.local:

APP_ENV=local

# Rest of the .env file contains the APP_DB_ variables referenced in database.json

Result of calling db-migrate:

flisboac@REDACTED:~/workspaces/REDACTED$ npx dotenv-cli -e .env.local db-migrate create baseline --sql-file
npx: installed 10 in 1.471s
[ERROR] uncaughtException
[ERROR] Error: Environment(s) 'dev, development' not found.
    at Config.exports.setCurrent (/home/flisboac/workspaces/REDACTED/node_modules/db-migrate/lib/config.js:23:11)
    at Object.exports.loadObject (/home/flisboac/workspaces/REDACTED/node_modules/db-migrate/lib/config.js:188:9)
    at Object.exports.loadFile (/home/flisboac/workspaces/REDACTED/node_modules/db-migrate/lib/config.js:94:18)
    at loadConfig (/home/flisboac/workspaces/REDACTED/node_modules/db-migrate/lib/commands/helper/load-config.js:12:18)
    at new dbmigrate (/home/flisboac/workspaces/REDACTED/node_modules/db-migrate/api.js:81:43)
    at Object.module.exports.getInstance (/home/flisboac/workspaces/REDACTED/node_modules/db-migrate/index.js:84:10)
    at /home/flisboac/workspaces/REDACTED/node_modules/db-migrate/bin/db-migrate:32:25
    at /home/flisboac/workspaces/REDACTED/node_modules/resolve/lib/async.js:133:25
    at maybeRealpath (/home/flisboac/workspaces/REDACTED/node_modules/resolve/lib/async.js:41:9)
    at /home/flisboac/workspaces/REDACTED/node_modules/resolve/lib/async.js:129:24
    at ondir (/home/flisboac/workspaces/REDACTED/node_modules/resolve/lib/async.js:309:27)
    at onex (/home/flisboac/workspaces/REDACTED/node_modules/resolve/lib/async.js:201:32)
    at /home/flisboac/workspaces/REDACTED/node_modules/resolve/lib/async.js:13:20
    at FSReqCallback.oncomplete (fs.js:193:5)

And even if I just put "defaultEnv": "local" in database.json, it completely ignores the migrationsDir configuration, and just creates a migration in the migrations folder instead, at the root of my project.

What is the motivation / use case for changing the behavior?

No behaviour change is being proposed.

Environment

  • db-migrate version: 1.0.0-beta.16
  • plugins with versions: (none)
  • db-migrate driver with versions:
    • db-migrate-mysql: 2.2.0 (not that it would make much difference, but here it goes!)

Additional information:

  • Node version: v14.17.5
  • Platform: Linux (WSL2)

Others:

flisboac@REDACTED:~/workspaces/REDACTED$ uname -a
Linux REDACTED 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant