I am trying to build a new database driver to be shipped as a 3rd-party plugin ( i.e. in a separate repo rather than the modules/drivers/ directory).
To begin, I am doing a spike where I clone the Sql Server driver plugin into a new driver named, say, ss2.
I copied the project.clj file and the resources and src folders into a new Clojure project, and I renamed the project file from sqlserver.clj to ss2.clj.
I also renamed the namespace (from metabase.driver.sqlserver to metabase.driver.ss2) and the project name (metabase/sqlserver-driver to metabase/ss2-driver) and the display name (Sql Server to SS2).
And I replaced every occurrence of the keyword :sqlserver with the keyword :ss2.
The rest of the code remained the same as for Sql Server.
Therefore, in my thinking, the driver should work the same as for Sql Server.
I installed metabase-core locally, then I built the new SS2 driver using the leinengen command:
This produced the ss2.metabase-driver.jar file in the target directory of my SS2 project.
I launched Metabase as a Docker container with Bind Mounting to the Plugins directory using the Docker command below:
docker run -d -p 3000:3000 --mount type=bind,source=/Users/myuser/Documents/Metabase/plugins,destination=/plugins --name metabase metabase/metabase
During initialization, Metabase built and produced the database drivers in the local host directory that I set a bind mount to:
I copied my ss2.metabase-driver.jar file into that /Users/myuser/Documents/Metabase/plugins directory and stopped and reran the Metabase container.
In my browser, when I navigated to http://localhost:3000 I get the Metabase Setup page.
In step 2, in the Add Your Data section, I can select “Sql Server” from the dropdown and complete the connection configuration. When I hit “Next”, my connection succeeds.
However, when I select “SS2” from the dropdown and complete the same connection configuration and hit “Next”, I get the error:
No method in multimethod ‘connection-details->spec’ for dispatch value: SS2
Why is my SS2 (a clone of Sql Server) failing with this message while Sql Server does not?