Bundle install installs gems in ./mysql2 folder

2019-03-11 11:24发布

问题:

I recently upgraded mysql on my machine. As a result I'm attempting to update my mysql2 gem accordingly. In the process of doing that, I run "bundle install", and for some reason all of the gems in my Gemfile are getting installed in a ./mysql2 directory??

ruby-1.9.2-p180 [dev]:project.git$ bundle install
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /Users/al/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.10/lib/bundler/shared_helpers.rb:3.
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /Users/al/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.10/lib/bundler/source.rb:162.
NOTE: Gem::SourceIndex#each is deprecated with no replacement. It will be removed on or after 2011-11-01.
Gem::SourceIndex#each called from /Users/al/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.10/lib/bundler/source.rb:162.
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /Users/al/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.10/lib/bundler/source.rb:162.
NOTE: Gem::SourceIndex#each is deprecated with no replacement. It will be removed on or after 2011-11-01.
Gem::SourceIndex#each called from /Users/al/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.10/lib/bundler/source.rb:162.
Fetching source index for http://rubygems.org/
Installing rake (0.8.7) 
Installing ZenTest (4.5.0) 
Installing abstract (1.0.0) WARNING: abstract-1.0.0 has an invalid nil value for @cert_chain

Installing activesupport (3.0.7) 
Installing builder (2.1.2) WARNING: builder-2.1.2 has an invalid nil value for @cert_chain

Installing i18n (0.5.0) 
Installing activemodel (3.0.7) 
Installing erubis (2.6.6) 
.
.
.
Installing typhoeus (0.2.4) with native extensions 
Installing webrat (0.7.3) 
Installing will_paginate (2.3.15) 
Your bundle is complete! It was installed into ./mysql2

For some reason, also my .bundle dir contains a config file that indicates the BUNDLE_PATH is mysql2? I don't know where this came from or how it got there...

ruby-1.9.2-p180 [dev]:project.git$ ls
Gemfile     README      app     config.ru   doc     log     mysql2      script      test
Gemfile.lock    Rakefile    config      db      lib     misc        public      spec        vendor
ruby-1.9.2-p180 [dev]:project.git$ ls -a
.       .git        Gemfile     Rakefile    config.ru   lib     mysql2      spec
..      .gitignore  Gemfile.lock    app     db      log     public      test
.bundle     .rspec      README      config      doc     misc        script      vendor
ruby-1.9.2-p180 [dev]:project.git$ cd .bundle
ls
ruby-1.9.2-p180 [dev]:.bundle$ ls
config
ruby-1.9.2-p180 [dev]:.bundle$ cat config
--- 
BUNDLE_DISABLE_SHARED_GEMS: "1"
BUNDLE_PATH: mysql2

Here's my Gemfile:

source 'http://rubygems.org'

gem 'rake'
gem 'rails'
gem 'mysql2', '0.2.6'
gem 'legacy_data'
gem 'htmlentities'
gem 'httparty'
gem 'net-ssh'
gem 'net-sftp'
gem 'rsolr'
gem 'activerecord-import'
gem 'ar-extensions'
gem 'typhoeus'
gem 'composite_primary_keys'
gem 'devise'
gem 'authlogic'
gem 'will_paginate'
gem 'json_pure' # Note that installing the 'json' gem results in a "[BUG] unknown type 0x22 (0xc given)" error when loading rails console
gem "friendly_id", "~> 3.2.1"

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Gems for RSpec
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :search_development, :test do
  gem 'rspec-rails', "~> 2.4"
  gem 'webrat'
  gem 'rspec'
end

gem 'autotest'

I've been spinning my wheels on this for some time. Thanks ahead of time for any ideas or thoughts about how to proceed. (Also, this is the second time that I've bundle installed into a mysql2 dir, so I've decided to stop now before I dig a deeper hole)

回答1:

It's actually deprecated behavior that I had a problem with a couple weeks ago. It's likely you ran the command bundle install mysql, which actually runs bundle install --path mysql and permanently sets its install directory to ./mysql2 (as little as that makes sense). The easiest way to fix this from happening is by running bundle install --system, and that should restore your default install directory. Next time if you want to upgrade a single gem, use the command bundle update mysql.



回答2:

I'm not sure why it's installing all to a mysql2 folder, but to get it back to how it should be run this: bundle install --path vendor

You should then be able to safely delete the mysql2 folder and your gems will be where they should be. Hopefully somebody else will be able to explain why it installed into that other folder.