Il comando rails server
genera questo errore.
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)
Uso Ruby 2.0.0 da RubyInstaller su Windows XP.
Ho capito qual è il problema ma non so come risolverlo. Il problema è che non esiste alcuna directory 2.0/
nella mysql2-0.3.11-x86-mingw32
. Questa è la gem che rails
installa come dipendenza da Gemfile :
GEM remote: https://rubygems.org/ specs: ... many gems here mysql2 (0.3.11-x86-mingw32) ... many gems here DEPENDENCIES ... mysql2 ...
Questo è ciò che è in quel file mysql2.rb
:
# 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
È ovvio che prende l’attuale numero di versione di Ruby e lo usa come segmento del percorso per raggiungere un file mysql2
. In effetti è mysql2.so
file mysql2.so
. Mentre uso Ruby 2.0.0 il segmento path è 2.0
:
mysql2/2.0/mysql2
Ok, ora vediamo come si presenta la directory della mysql2-0.3.11-x86-mingw32
:
dir: C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\
Nessuna directory 2.0/
.
Conosco il problema di libmysql.dll . C:\Ruby200\bin
ho nel mio C:\Ruby200\bin
. Non aiuta
Ho letto questa risposta https://stackoverflow.com/a/5368767/1114926 dal creatore di RubyInstaller. Ci ho provato ma non è stato d’aiuto. Funziona con Ruby 1.9.3
perché c’è la directory 1.9/
. Ma non funziona per Ruby 2.0.0
.
Come risolverlo?
UPD 1:
Grazie per la tua risposta . Ho provato. Purtroppo ho ERROR: Failed to build gem native extension.
errore:
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...
Dice:
Devi prima installare gli strumenti di sviluppo.
Ma ho installato DevKit completo, RubyInstaller lo installa. Non riesco a capire cos’altro ha bisogno.
Ho già pubblicato un problema nella pagina GitHub mysql2
https://github.com/brianmario/mysql2/issues/364 . Nessuna risposta ancora.
Aveva lo stesso identico problema su Windows 7 x64 con Ruby 2.0.0 e DevKit 4.7.
I seguenti passaggi mi hanno aiutato.
gem disinstallare mysql2
Scarica l’ultimo connettore MySQL da http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip
Estrarlo in C: \ connettore-6.0.2
gem install mysql2 –platform = ruby - ‘–with-mysql-lib = “C: \ connector-6.0.2 \ lib” –with-mysql-include = “C: \ connettore-6.0.2 \ include “–with-mysql-dir =” C: \ connettore-6.0.2 “‘
O ancora più corto:
gem install mysql2 –platform = ruby - –with-opt-dir = “C: \ connector-6.0.2”
disinstallare mysql2-0.3.11-x86-mingw32
, gemme compilate prima che Ruby200
non funzioni. Devi compilarlo da solo. Se si esegue gem uninstall mysql2
e c’è una versione non compilata elencata quindi basta disinstallare mysql2-0.3.11-x86-mingw32
– la versione compilata altro …
Installazione gem install mysql2 --platform=ruby
. quello funzionerebbe.
Segui questa guida sull’installazione di devkit http://rubyonwindowsguides.github.com/book/ch02-04.html .
Quindi riprova.
Esattamente lo stesso comportamento quando provo a installare Redmine su Windows XP
per il momento, sono bloccato là … ma se qualcuno ha qualcosa che mi permetta di andare avanti, sarà molto gradito. Terrò anche informato
Antoine
Ho quasi fatto lo stesso cosa descritto da @odiszapc. Disinstallare old gem, scaricare mysql-connector-c-noinstall, decomprimere, ma alla fine ho usato questo comando per creare gem nativo:
gem install mysql2 --platform=ruby -- --with-opt-dir=/c/connector-6.0.2
(Se usi git-bash, puoi usare la syntax della directory di stile unix.)
Copia incolla da quel link: https://github.com/brianmario/mysql2/issues/359 . Ha funzionato per me.
Se dopo aver installato la gem, si ottiene un errore:
“Il modulo richiesto non può essere trovato.
C: /Devel/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11/lib/mysql2/mysql2.so”
Questo può essere risolto copiando libmysql.dll
nella cartella bin di Ruby.