TL;DR This is your periodic reminder to specify dependency versions in your Gemfile
I started updating one of our larger projects at work to use edge Rails. This project uses devise, and the Gemfile declares the dependency like this:
The latest version of devise correctly declares its dependency on Railties on ~> 3.1:
However, Devise version 1.5.3 does not declare a specific dependency on Rails (or Railties):
This means that as I upgrade this application, doing a
bundle update pulls in
Devise version 1.5.3. This version of Devise is incompatible with the app’s
codebase. How do you fix it? Update the Gemfile to include the version number
(just like rubygems.org recommends) like this:
gem "devise", "~> 2.1.2"
Bundling against Rails 4.0 will fail, but at least it will be a fail during bundle time and not during runtime:
Bundler could not find compatible versions for gem "railties": In Gemfile: devise (~> 2.1.2) ruby depends on railties (~> 3.1) ruby rails (>= 0) ruby depends on railties (4.0.0.beta)
Time to find what other version issues await!