`bundle update` can downgrade gems as well as upgrade them so `~> 4.0.3` should be used but then the exact version of Rails needs to be specified each time it's updated so you might as well just use it - `4.0.3`.

Also, Rails is probably big enough and important enough that specifying the exact version is probably a good thing to do anyway. It's also easier to grep the version.