Erro “… não pode carregar tal arquivo - mysql2 / 2.0 / mysql2 (LoadError)”. No Windows XP com o Ruby 2.0.0
O comandorails server
lança esse erro.
C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11-x86-mingw32/lib/mysql2/mysql2.rb:2:in `require': cannot load
such file -- mysql2/2.0/mysql2 (LoadError)
eu usoRuby 2.0.0 deRubyInstaller na caixa do Windows XP.
Eu descobri qual é o problema, mas não sei como resolvê-lo. O problema é que não há2.0/
diretório nomysql2-0.3.11-x86-mingw32
gema. Essa é a joia querails
instala como sua dependência deGemfile:
GEM
remote: https://rubygems.org/
specs:
... many gems here
mysql2 (0.3.11-x86-mingw32)
... many gems here
DEPENDENCIES
...
mysql2
...
Isso é o que está nessamysql2.rb
Arquivo:
# C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\mysql2.rb
RUBY_VERSION =~ /(\d+.\d+)/
require "mysql2/#{$1}/mysql2" # <<-- this is that #2 line that throws an error
É óbvio que ele pega o número atual da versão do Ruby e o usa como o segmento do caminho para alcançar algummysql2
Arquivo. Na verdade, émysql2.so
Arquivo. Como eu usoRuby 2.0.0 o segmento do caminho é2.0
:
mysql2/2.0/mysql2
Ok, agora vamos ver como esse diretório demysql2-0.3.11-x86-mingw32
gem parece com:
dir: C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\
Nenhum2.0/
diretório.
Eu sei o problema sobrelibmysql.dll. Eu tenho isso na minhaC:\Ruby200\bin
. Isso não ajuda.
Eu li essa respostahttps://stackoverflow.com/a/5368767/1114926 do criador do RubyInstaller. Eu tentei mas não ajudou. Funciona paraRuby 1.9.3
porque há1.9/
diretório. Mas não funciona paraRuby 2.0.0
.
Como resolver isso?
UPD 1:
Obrigado pelo seuresponda. Eu tentei. Infelizmente eu tenhoERROR: Failed to build gem native extension.
erro:
C:\>gem install mysql2 --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
C:/Ruby200/bin/ruby.exe extconf.rb
checking for rb_thread_blocking_region()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby200/bin/ruby
C:/Ruby200/lib/ruby/2.0.0/mkmf.rb:431:in `try_do': The compiler failed to generate an executable file. (Runtim
eError)
You have to install development tools first.
... other code follows here...
Diz:
Você precisa instalar as ferramentas de desenvolvimento primeiro.
Mas eu tenho o DevKit completo instalado, o RubyInstaller o instala. Não consigo entender o que mais precisa.
Eu já postei um problema paramysql2
Página do GitHubhttps://github.com/brianmario/mysql2/issues/364. Nenhuma resposta ainda.