Code Monkey home page Code Monkey logo

Comments (5)

cemerick avatar cemerick commented on August 28, 2024

Except that drawbridge doesn't require 1.1.0. I suspect you are aiming to use some version of ring >= to that, but drawbridge's lower dependency is (unfortunately) overriding it.

This same problem will occur when using any library that doesn't require a newer version of ring, because ring itself only specifies a "soft" version number dependency on ring-core. If that were changed to e.g. [ring/ring-core "[1.1.0,)"] (meaning, that ring v1.1.0 requires 1.1.0 or higher of ring-core), then drawbridge's lower version dependency would not countermand that.

Maybe this is something @weavejester would consider for future releases?

from drawbridge.

weavejester avatar weavejester commented on August 28, 2024

I tend to steer clear of version ranges for these reasons.

from drawbridge.

cemerick avatar cemerick commented on August 28, 2024

Like most "X considered harmful" sorts of posts, some subtleties and certain circumstances that are glossed over. Version ranges are sometimes indispensable.

@ccfontes I would suggest changing your ring dependency(ies) to a version that sets 1.1.0 as a hard lower bound, instead of the "soft" version number I presume you have set currently.

from drawbridge.

weavejester avatar weavejester commented on August 28, 2024

There may be rare circumstances where version ranges are useful, but in general I find they're more trouble than they're worth. For example, if [ring "1.1.0"] had a dependency of [ring/ring.core "[1.1.0,)"], then it would depend on the latest snapshot of Ring, which might be incompatible with 1.1.0 (e.g. a hypothetical [ring/ring.core "2.0.0-SNAPSHOT"])

In general it's best to stick with soft version numbers, and to remember that the closer dependencies take priority over the latter ones. This can cause problems, but they can be resolved by specifying explicit dependencies in your project file. Problems with version ranges, particularly hard ones, are not so easily to resolve.

from drawbridge.

cemerick avatar cemerick commented on August 28, 2024

Using [com.cemerick/drawbridge "$VERSION" :exclusions [ring/ring-core]] will have to be the "official" workaround until something can be done to smooth this general problem over in Leiningen (see cemerick/friend#15 for another example).

from drawbridge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.