rake_multi_db
Simple interactive rake task to automatically drop/migrate/drop & migrate/reset multiple databases
Installation
- Add
gem 'rake_multi_db', '~> 0.0'to your application's Gemfile.
Usage
Simply run this rake task as you would any other rake task, from your rails project directory, using the multi_db: prefix and the appropriate tasks and parameters.
Parameters
The following parameters are able to be invoked
| Parameter | Default Value | Comment | Example |
|---|---|---|---|
| environments | test,development | A comma-seperated string of environments to work with. | rake multi_db:drop environments=test,development |
| force | false | Whether to forcefully progress if an error occurs, without prompting the user. |
rake multi_db:drop force=true |
The following tasks are able to be used
| Task | Purpose |
|---|---|
| drop | Drops the specified environment's database. |
| migrate | Migrates the specified environment's database from the relevant migration file. |
| redo | Drops and migrates the specified environment's database. |
| reset | Resets all table data for the specified environment. |
Arguments are passed as follows:
rake multi_db:{Task} {parameter}={parameter_value}
i.e.
To drop specified environment databases:
rake multi_db:drop environments={environments_to_drop_comma_seperated}
To drop test and development databases:
rake multi_db:drop or rake multi_db:drop environments=test,development
To migrate all Test & Development databases:
rake multi_db:migrate or rake multi_db:migrate environments=test,development
To drop and migrate all Test & Development databases:
rake multi_db:redo or rake multi_db:redo environments=test,development
To reset all Test & Development databases
rake multi_db:reset or rake multi_db:reset environments=test,development
Things to keep in mind
-
The value specified by
RAILS_ENVis ignored entirely. -
When no environments are passed through to this rake task, it will automatically use both
testanddevelopmentenvironments. i.e. runningrake multi_db:dropwill drop alltestanddevelopmentdatabases. If you only want to drop, say, the test databases, specify an environment, as follows:rake multi_db:drop environments=test -
By default, when an error is encountered, the user will be asked to confirm whether they would like to continue. If you want to forcefully progress, and suppress all prompts, execute the rake task using the
forceparameter i.e.rake multi_db:drop environments=test,development force=true
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request :D