Hi,
I recently tried to upgrade a small application to ecto2 and sqlite_ecto2. Previously I could just run mix test
to run my tests, but now if I do that dependency check fails while running tests:
$ mix test
Unchecked dependencies for environment test:
- decimal (Hex package)
the dependency does not match the requirement “~> 1.2”, got “1.1.2”- ecto (Hex package)
the dependency does not match the requirement “~> 2.2”, got “1.1.9”- sqlitex (Hex package)
the dependency does not match the requirement “~> 1.3.2 or ~> 1.4”, got “0.8.0”
** (Mix) Can’t continue due to errors on dependencies
There is a difference in the output of mix deps
when run in the different environments:
$ MIX_ENV=test mix deps
- esqlite 0.2.3 (Hex package) (rebar3)
locked at 0.2.3 (esqlite) 1a8b6087
ok- connection 1.0.4 (Hex package) (mix)
locked at 1.0.4 (connection) a1cae722
ok- ranch 1.3.2 (Hex package) (rebar3)
locked at 1.3.2 (ranch) e4965a14
ok- poolboy 1.5.1 (Hex package) (rebar)
locked at 1.5.1 (poolboy) 6b461639
ok- decimal (Hex package) (mix)
locked at 1.4.1 (decimal) ad9e501e
the dependency does not match the requirement “~> 1.2”, got “1.1.2”- sbroker 1.0.0 (Hex package) (rebar3)
locked at 1.0.0 (sbroker) 28ff1b5e
ok- db_connection 1.1.2 (Hex package) (mix)
locked at 1.1.2 (db_connection) 2865c2a4
ok- ecto (Hex package) (mix)
locked at 2.2.7 (ecto) 2074106f
the dependency does not match the requirement “~> 2.2”, got “1.1.9”- cowlib 1.0.2 (Hex package) (rebar3)
locked at 1.0.2 (cowlib) 9d769a1d
ok- cowboy 1.1.2 (Hex package) (rebar3)
locked at 1.1.2 (cowboy) 61ac29ea
ok- mime 1.2.0 (Hex package) (mix)
locked at 1.2.0 (mime) 78adaa84
ok- plug 1.4.3 (Hex package) (mix)
locked at 1.4.3 (plug) 236d77ce
ok- sqlitex (Hex package) (mix)
locked at 1.3.3 (sqlitex) 3aac5fd7
the dependency does not match the requirement “~> 1.3.2 or ~> 1.4”, got “0.8.0”- sqlite_ecto2 2.2.2 (Hex package) (mix)
locked at 2.2.2 (sqlite_ecto2) 7a3e5c05
ok
And in prod or dev:
$ mix deps
- esqlite 0.2.3 (Hex package) (rebar3)
locked at 0.2.3 (esqlite) 1a8b6087
ok- connection 1.0.4 (Hex package) (mix)
locked at 1.0.4 (connection) a1cae722
ok- ranch 1.3.2 (Hex package) (rebar3)
locked at 1.3.2 (ranch) e4965a14
ok- poolboy 1.5.1 (Hex package) (rebar)
locked at 1.5.1 (poolboy) 6b461639
ok- decimal 1.4.1 (Hex package) (mix)
locked at 1.4.1 (decimal) ad9e501e
ok- sbroker 1.0.0 (Hex package) (rebar3)
locked at 1.0.0 (sbroker) 28ff1b5e
ok- db_connection 1.1.2 (Hex package) (mix)
locked at 1.1.2 (db_connection) 2865c2a4
ok- ecto 2.2.7 (Hex package) (mix)
locked at 2.2.7 (ecto) 2074106f
ok- cowlib 1.0.2 (Hex package) (rebar3)
locked at 1.0.2 (cowlib) 9d769a1d
ok- cowboy 1.1.2 (Hex package) (rebar3)
locked at 1.1.2 (cowboy) 61ac29ea
ok- mime 1.2.0 (Hex package) (mix)
locked at 1.2.0 (mime) 78adaa84
ok- plug 1.4.3 (Hex package) (mix)
locked at 1.4.3 (plug) 236d77ce
ok- sqlitex 1.3.3 (Hex package) (mix)
locked at 1.3.3 (sqlitex) 3aac5fd7
ok- sqlite_ecto2 2.2.2 (Hex package) (mix)
locked at 2.2.2 (sqlite_ecto2) 7a3e5c05
ok
Since I’m quite new to this I don’t understand these differences, they might me explainable but not by me. This is my mix.exs
:
defmodule Helloplug.Mixfile do
use Mix.Project
def project do
[
app: :helloplug,
version: "0.1.0",
elixir: "~> 1.5",
start_permanent: Mix.env == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger, :sqlite_ecto2, :ecto, :cowboy, :plug],
mod: {WebsiteRouter, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:cowboy, "~> 1.1"},
{:plug, "~> 1.4"},
{:sqlite_ecto2, "~> 2.2"},
{:ecto, "~> 2.2"}
]
end
end