Search code examples
rubyrubygemsversiongemspecs

What is reccomended practice for version restrictions in rubygem add_dependency?


When authoring a gem, what would be reccomended practice for version restrictions of dependencies. For example I know that know that my gem works wih rubyzip version 2.x, but I also know that it works for 1.9 as well. Should I state

spec.add_runtime_dependency 'rubyzip', '>1.8'

or if the rubyzip version 1.9 is long time outdated, it is more common to "push" change for 2.x line? Also if I use the mentioned line, that I risk incompability with future versions, but on the other hand, leave the coice to the user.

Note: the questions is generall and dependency on rubyzip is just an example.


Solution

  • If you know that your gem works with rubyzip 1.9, then there's really no need to force people to use >=2.0 with it.

    Sure, updating dependencies would be a good idea for your library-user to do, but it's not your job to be the "update-your-software-police"!

    Specifying that the version must be < 3 is generally advisable (although not consistently done by developers), as there's a reasonable risk that a major dependency version bump will be incompatible with this version of your code.

    So, as a compromise, you could do:

    spec.add_runtime_dependency 'rubyzip', '>=1.9', '<3'
    

    See the documentation for valid syntax examples.