gem install mysql2 / cannot load such file — mysql2/mysql2
尝试在Cent OS 6.3上使用ruby2.0.0-p247安装mysql2 gem。
这一切都适用于ruby-1.9.3-p324,但使用RVM安装ruby2。 我的测试代码如下
require"mysql2"
puts"test"
针对上面的代码运行ruby,我收到错误:
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in
require': cannot load such file -- mysql2/mysql2 (LoadError) from require' from
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.11/lib/mysql2.rb:9:in
require' from ' from
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:60:in
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:60:in
rescue in require' from require' from mysqltest.rb:1:in `'
/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:35:in
bundle install / gem install mysql2运行正常,它只是试图使用gem。 我用google搜索了这个问题,常见的答案是没有安装libmysql-devel软件包等,因为它在ruby-1.9.3下工作正常。
这些文件在磁盘上
1 2 3 4 5 6 | [git@rubyland-provisioner mysql2-0.3.11]$ ls lib/mysql2 client.rb em.rb error.rb result.rb version.rb [git@rubyland-provisioner mysql2-0.3.11]$ ls ext/mysql2 client.c client.o Makefile mysql2_ext.c mysql2_ext.o result.c result.o client.h extconf.rb mkmf.log mysql2_ext.h mysql2.so result.h wait_for_single_fd.h |
如果我手动将mysql2.so(由gem安装构建,我已经检查了时间戳)复制到lib / mysql2目录,一切都按预期工作。
我对Ruby很新; 我错过了什么? 为什么gem安装不会将此文件复制到正确的位置。
谢谢
安德鲁
事实证明这是RVM中由RVM安装的RubyGems版本的错误。 您需要确保安装的RubyGems是2.x. 对我来说情况并非如此,RVM根本没有安装RubyGems,或者没有安装正确的版本; 我们最终从IRC上的RVM频道获得了一些帮助。
在我们的谈话背后,在Twitter上有更多细节。
just found proof that ruby 2.0.0 should not be used with rubygems 1.8.25 - c-extensions are installed in wrong path, try nokogiri /@rubygems
— Michal Papis (@mpapis) July 16, 2013
只是降级mysql2版本。 在我的情况下,我使用'0.2.6'版本,它适用于我。
1 | gem 'mysql2', '0.2.6' |
使用ruby版本2.0.0和gem版本1.8.25