mysql2 gem in gem list but getting project can not find gem
Asked Answered
C

4

9

I am currently building a RoR project that requires the mysql2 gem. I successfully installed the gem. Because it is showing up in my gem list.

[root@vc2cmmka035538n simple_cms]# gem list

*** LOCAL GEMS ***

actionmailer (3.2.3)
actionpack (3.2.3)
activemodel (3.2.3)
activerecord (3.2.3)
activeresource (3.2.3)
activesupport (3.2.14, 3.2.3)
arel (3.0.2)
bigdecimal (1.1.0)
builder (3.2.2, 3.0.0)
bundler (1.1.5)
c2c_linux_patch_utilities (0.29.0)
chef (11.6.2)
chef-zero (1.6)
debug_me (0.5.1)
diff-lcs (1.1.3)
erubis (2.7.0)
gelf (1.1.3)
hashie (2.0.5)
highline (1.6.19)
hike (1.2.1)
i18n (0.6.5)
io-console (0.3)
ipaddress (0.8.0)
journey (1.0.3)
json (1.7.7, 1.5.5)
knife-lastrun (0.0.4)
mail (2.4.4)
mime-types (1.25)
minitest (2.5.1)
mixlib-authentication (1.3.0)
mixlib-cli (1.3.0)
mixlib-config (1.1.2)
mixlib-log (1.6.0)
mixlib-shellout (1.2.0)
moneta (0.6.0)
multi_json (1.8.1)
mysql2 (0.3.17) //here it is! :(
net-ssh (2.7.0)
net-ssh-gateway (1.2.0)
net-ssh-multi (1.2.0, 1.1)
ohai (6.18.0)
polyglot (0.3.3)
pony (1.4, 1.3)
poseidon (0.0.4)
puma (1.6.3)
rack (1.5.2, 1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.2.3)
railties (3.2.3)
rake (10.1.0, 0.9.2.2)
rdoc (3.12.2, 3.9.5)
rest-client (1.6.7)
rspec (2.12.0)
rspec-core (2.12.2)
rspec-expectations (2.12.1)
rspec-mocks (2.12.2)
rspec_junit_formatter (0.1.6)
ruby-shadow (2.2.0)
rubygems-update (1.8.19)
sdoc (0.3.20)
simplecov (0.7.1)
simplecov-html (0.7.1)
sprockets (2.1.2)
systemu (2.5.2, 2.5.1)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.31)
xml-simple (1.1.1)
yajl-ruby (1.1.0)

However I am getting the following error when I try to start my project:

[root@vc2cmmka035538n simple_cms]# rails s
Could not find gem 'mysql2 (= 0.3.17) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.

The gem is also definitely in my Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.3'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'mysql2', '0.3.17'


gem 'json'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platform => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

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

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug'

What can I do for my project to recognize that mysql2 gem is most definitely installed on my machine?


EDIT: Wanted to include information about my environment

Ruby: ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]

Rails: Rails 3.2.3

RubyGem Environment:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.24
  - RUBY VERSION: 1.9.3 (2013-06-27 patchlevel 448) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/chef/embedded/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/chef/embedded/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/chef/embedded/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /opt/chef/embedded/lib/ruby/gems/1.9.1
     - /root/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://c2c-repo1-prod.fmr.com:9292"]
  - REMOTE SOURCES:
     - http://c2c-repo1-prod.fmr.com:9292
Capablanca answered 22/1, 2015 at 14:29 Comment(0)
B
14

Delete your Gemfile.lock and run bundle install

Biafra answered 22/1, 2015 at 14:39 Comment(8)
I do not have a Gemfile.lock file created yet because I haven't been able to run the project. Also, I can not run bundler at work because of security reasons, but I can install gems using gem installCapablanca
Then, delete your Gemfiles and try again. Gemfiles are for the bundlerBiafra
btw I strongly recommend that you use bunlder, it's great for deployment and collaborating and really makes your ruby life easier. What are the security reasons ?Biafra
@Thomas_Haratyk - So I should completely delete my Gemfile and try to run rails s again? For one reason or another, the location I work at, has a proxy they are incredibly strict about, so commands like wget do not work :/ My feels about this are besides that point.Capablanca
@Capablanca Keep a copy of your gemfile and try removing it. But I'm not sure it'll work...Biafra
@Thomas_Haratyk i completely removed my gemfile (without putting it back) and it is now running... will this cause problems in the future though if I need to make use of other gems?Capablanca
It might cause problem if you are willing to work on different workstations or to collaborate with anyone. You will have to manually install the gems (in the right version). Deployment to other platforms will need manual installation of the gems aswell, in the worst case you might not be able to deploy without using bundler (on Heroku for example)Biafra
Let us continue this discussion in chat.Capablanca
F
16

it is possible that the packages needed to build native extensions are not installed.

#installs the tools and libraries for basic development, eg. make.
sudo apt-get install build-essential

#installs the sources for ruby
sudo apt-get install ruby-dev

#installs the libraries and headers for mysql extensions
sudo apt-get install libmysqlclient-dev
Ferdie answered 10/11, 2016 at 11:8 Comment(0)
B
14

Delete your Gemfile.lock and run bundle install

Biafra answered 22/1, 2015 at 14:39 Comment(8)
I do not have a Gemfile.lock file created yet because I haven't been able to run the project. Also, I can not run bundler at work because of security reasons, but I can install gems using gem installCapablanca
Then, delete your Gemfiles and try again. Gemfiles are for the bundlerBiafra
btw I strongly recommend that you use bunlder, it's great for deployment and collaborating and really makes your ruby life easier. What are the security reasons ?Biafra
@Thomas_Haratyk - So I should completely delete my Gemfile and try to run rails s again? For one reason or another, the location I work at, has a proxy they are incredibly strict about, so commands like wget do not work :/ My feels about this are besides that point.Capablanca
@Capablanca Keep a copy of your gemfile and try removing it. But I'm not sure it'll work...Biafra
@Thomas_Haratyk i completely removed my gemfile (without putting it back) and it is now running... will this cause problems in the future though if I need to make use of other gems?Capablanca
It might cause problem if you are willing to work on different workstations or to collaborate with anyone. You will have to manually install the gems (in the right version). Deployment to other platforms will need manual installation of the gems aswell, in the worst case you might not be able to deploy without using bundler (on Heroku for example)Biafra
Let us continue this discussion in chat.Capablanca
N
3

gem install mysql

then

gem install mysql2

work fine

Necaise answered 15/9, 2016 at 8:23 Comment(0)
G
0

For folks/mac users who are still facing this, try (You may skip the first step )
Step 1

gem install mysql

Step 2

brew install openssl

Step 3

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

Step 4

brew install mysql2

In case this doesn't work, check the conversations at this github issue page
Ref - in case the above thing doesn't work can check the

Gerald answered 3/2, 2022 at 13:49 Comment(1)
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.Vidal

© 2022 - 2025 — McMap. All rights reserved.