Gemfile. lock is automatically generated when you run bundle install or bundle update . It should never be edited manually.
The Gemfile is where you specify which gems you want to use, and lets you specify which versions. The Gemfile. lock file is where Bundler records the exact versions that were installed. This way, when the same library/project is loaded on another machine, running bundle install will look at the Gemfile.
Process: install the gem generically, looking up your target version on rubygems.org, then update and version your Gemfile. the install command is in the right-hand column. then you can: gem install gem_name -v 1.5.
A Gemfile is a file we create which is used for describing gem dependencies for Ruby programs. A gem is a collection of Ruby code that we can extract into a “collection” which we can call later. It lets you specify which gems you want to use, and which versions of these gems to use.
Using bundle exec
is the right way to do this.
Basically what's happening is that you've updated rake to 0.9.2 which now conflicts with the version specified in your Gemfile. Previously the latest version of rake
you had matched the version in your Gemfile, so you didn't get any warning when simply using rake
.
Yehuda Katz (one of the original Bundler developers) explains it all in this blog post.
To avoid typing bundle exec ...
all the time, you could set up an alias or function in your shell for commands you commonly use with Bundler. For example this is what I use for Rake:
$ type bake
bake is a function
bake ()
{
bundle exec rake "$@"
}
Try bundle clean --force
It removes every system gem not in this bundle
If you have a reason to keep the current version of rake (or whatever other gem is causing the problem), matt is correct, the best way to do this is to run bundle exec
. This uses the version specified in your Gemfile instead of using the newest version of the gem you have installed. (nathan.f77 has a good solution below if you don't want to type bundle exec
every time you run rake)
Otherwise, if there is no reason not to update rake, you can run
bundle update rake
This will actually update your Gemfile.lock to use the newest version of rake instead of having to run bundle exec
every time.
Note: if you run just bundle update
this will update all the gems in your Gemfile instead of just rake, which probably isn't what you want, because if something breaks in your application you won't know which gem update caused it.
The less recommended way to keep the older version without having to use bundle exec
is to uninstall the newer versions of rake.
$ gem uninstall rake Select gem to uninstall: 1. rake-0.8.7 2. rake-0.9.2 3. All versions > 2 Successfully uninstalled rake-0.9.2
This works, but if you are working with multiple apps that use different versions of rake, this can be a pain because you will find yourself constantly having to install and uninstall different versions.
Last time that this happened to me, I had updated all my gems. I did a gem uninstall rake
and it listed version options. I picked the newer one, and then I did not have to use bundle exec
anymore.
Basically, if you use bundle exec
it uses whatever gem version is in installed by your bundle, so what is in the Gemfile. Without bundle exec
it uses whatever version is your system default.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With