You have already activated X, but your Gemfile requires Y

前端 未结 8 2502
逝去的感伤
逝去的感伤 2020-11-27 10:43

When running rake I get this error:

You have already activated rake 0.9.2, but your Gemfile requires rake 0.8.7. Consider using bundle ex

相关标签:
8条回答
  • 2020-11-27 11:13

    Try bundle clean --force

    It removes every system gem not in this bundle

    0 讨论(0)
  • 2020-11-27 11:14

    Another way to not type it every time is with a Makefile, for example

    rake :
        bundle exec rake
    
    0 讨论(0)
  • 2020-11-27 11:19

    Ooh! The Katz article is excellent!

    I like this solution the best:

    bundle install --binstubs
    

    so that you can now type

    bin/rake .stuff.
    

    For someone like myself who is developing both 2.3 and 3.0.9 apps, this makes me feel a lot better.

    0 讨论(0)
  • 2020-11-27 11:20

    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.

    0 讨论(0)
  • 2020-11-27 11:29

    You might as well want to delete the Gemfile.lock file and run bundle install or just bundle, then try again.

    0 讨论(0)
  • 2020-11-27 11:30

    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 "$@"
    }
    
    0 讨论(0)
提交回复
热议问题