I have this in my
shards list output:
* neo4j (0.6.0)
* amqp-client (0.6.6)
* amq-protocol (0.3.24)
* raven (1.9.1)
But when I run
shards outdated, this is the output:
Unable to satisfy the following requirements:
- `crystal (~> 0.27, >= 0.27.0)` required by `neo4j 0.5.5`
Failed to resolve dependencies, try updating incompatible shards or use --ignore-crystal-version as a workaround if no update is available.
Why there is version neo4j 0.5.5 in the output? If I check
lib/neo4j/shard.yml file, there is correct
0.6.0 version. I’m confused.
~/.cache/shards, but still the same output.
Is it a bug?
➤ crystal --version
Crystal 1.0.0 [dd40a2442] (2021-03-22)
Default target: x86_64-unknown-linux-gnu
➤ shards --version
Shards 0.14.1 [addc26a] (2021-03-10)
I see it as a bug: https://github.com/crystal-lang/shards/issues/413
but actually this check was added intentionally, so it probably won’t be changed.
The short story is that there was an implicit mandate for developers to explicitly specify that their library works with 1.0.0, or else it will break as shown here.
To just move on with your life:
As for that, it does seem like an actual separate bug.
It happens because you have that version in your shard.lock (or, at least it’s one of the things that I found to cause this):
And I think yes, that message should be based on the actual version, not on the old one in the lock. I made sure to run
shards update (not just
install) and the message still was like that.
shard.lock is correct (included in my original question):
Ah you’re right! It happens to me as well. Don’t have
0.5.5 in any file whatsoever but it still shows that.
It still blows my mind that you’re using my Neo4j driver in production. My apps using Neo4j haven’t needed updating in a while, so I haven’t been working on it, so this was a fun reminder!