How to revert phx.gen.context via mix

I run this command:

$ mix phx.gen.context Cars Car cars model:string price:string

and then I run:

$ mix ecto.migrate

Now, I would like to remove it back, all the changes in Phoenix including inside the database (Postgres in my case).

What steps do I need to take?

I am not using git, so reverting back is not an option. Although this revertion wouldn’t help with Postgres I am afraid.

I am especially worried about polluting my database. Is there a nice way to safely revert/remove stuff from the DB without manually tinkering with the DB? Including stuff like the sequences, indexes of the DB, etc.?

To revert the last migration changes in your database (assuming the migration you’ve done only applied the new context, since rollback will remove everything the last migration did), you can use:
mix ecto.rollback

I’m not aware of any mix task that can remove the created files from the generator (maybe someone knows better), you’ll have to do this by hand.

Yeah, that seems to remove stuff from the DB including seqence stuff. Thanks.

What about the files and settings in the Phoenix app itself?

I found this message in my terminal when I created it via:

$ mix phx.gen.context Cars Car cars model:string price:string

Here is the message:

* creating lib/carsite/cars/car.ex
* creating priv/repo/migrations/20211211065348_create_cars.exs
* creating lib/carsite/cars.ex
* injecting lib/carsite/cars.ex
* creating test/carsite/cars_test.exs
* injecting test/carsite/cars_test.exs
* creating test/support/fixtures/cars_fixtures.ex
* injecting test/support/fixtures/cars_fixtures.ex

What does injecting mean? Does it mean that the info about this file is being added/injected into some other Phoenix config file?

Do I just need do manually delete the files where there is the word creating at the beginning of the line?

Or there will be some parts in Phoenix - like with the injecting lines that need to be corrected afterwards? If so, which files holds such info in Phoenix and what should I look for?

I don’t use the generator, but here’s my best guess. You should be fine just removing the created file. If the generator had modified anything else, it would tell you about it. injecting only means that it’s adding content to the files created just before it (probably because it supports the file already being there, and only injecting content into it).

2 Likes