I’m working my way through the Programming Phoenix > 1.4 book and I’ve got a problem with the formatter.
I’m using Atom with Elixir addons, which calls the formatter and reports errors and autofixes the format. But the formatter doesn’t like the migrations. I get this error
** (Mix) Unknown dependency :ecto_sql given to :import_deps in the formatter configuration. The dependency is not listed in your mix.exs for environment :dev
Which is odd because :ecto_sql is very definitely in the list of dependencies in mix.exs, though there isn’t a specific environment for :dev section.
Since this is a plain installation, and follows the book, I’m assuming that other people have the same problem, but I can’t see any other questions being asked.
Hi @JohnSmall, the error happens if the mix format command runs in wrong directory. I guess it is caused by the Elixir plugin used in Atom. You can try VSCode and install the “ElixirLS Fork” extension.
Hi @JohnSmall did you per chance use the latest version of ecto instead of the version specified in the Phoenix book? In the latest version of Ecto, you need to add :ecto_sql as an additional dependency now, it was extracted from ecto proper.
Just tried it and it makes no difference. Which is reasonable because it checks the formats on all other files in the project correctly.
If I had to start Atom from the command line in the root directory of the project to get it to work that would be crazy as I have 5 projects open at once.
As the author doesn’t have time to fix the problem I’ll investigate a bit to see if I can diagnose what’s going wrong.
A quick scan of the code shows that it runs mix format inside the first directory where it find a .formatter.exs file for the file being checked.
If I cd into the migrations directory and run mix format etc then I get the exact same error that the package reports.
The workaround is to delete .formatter.exs from the migrations directory. It’s already checked in the configuration inside .formatter.exs in the root directory. Then it works
So the lesson is atom-elixir-formatter can only be run on sub-directories that don’t have a .formatter.exs
@JohnSmall I just published v2.0.0 of atom-elixir-formatter a few days ago, which I believe will fix this issue. It required significant changes, so please take a look and let me know if it works for you.