We use Rake to perform batch operations on the database.
lib/tasks with a descriptive name and the .rake extensionnamespace to a relevant contextnamespace :<CONTEXT> do
desc "<DESCRIPTION>"
task <TASK_NAME>: [:environment] do
<VAR_NAME> = <MODEL_CLASS>.new(<...>)
<VAR_NAME>.save!
end
end
In your terminal run
docker-compose run --rm web bundle exec rake <CONTEXT>:<TASK_NAME> RAILS_ENV=<ENVIRONMENT>
- CONTEXT: as defined for your namespace
- TASK_NAME: As defined for the task
- ENVIRONMENT: development, staging or production
namespace :<CONTEXT> do
desc "<DESCRIPTION>"
task :<TASK_NAME>, [:<ARG_1>, :<ARG_2>] => [:environment] do |t, args|
<VAR_NAME> = <MODEL_CLASS>.new(<ARG_1>: args.<ARG_1>, <ARG_2>: args.<ARG_2>)
<VAR_NAME>.save!
end
end
In your terminal run
docker-compose run --rm web bundle exec rake "<CONTEXT>:<TASK_NAME>[ARG_1,ARG_2]" RAILS_ENV=<ENVIRONMENT>
- CONTEXT: as defined for your namespace
- TASK_NAME: As defined for the task
- ENVIRONMENT: development, staging or production
NOTE: Remember to test your tasks thoroughly before running them on the production Heroku container as these will have a permanent effect on the database.