Ошибка "... не может загрузить такой файл - mysql2/2.0/mysql2 (LoadError)". В Windows XP с Ruby 2.0.0

Команда rails server выдает эту ошибку.

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)

Я использую Ruby 2.0.0 из RubyInstaller в окне Windows XP.

Я понял, в чем проблема, но я не знаю, как ее решить. Проблема в том, что в mysql2-0.3.11-x86-mingw32 не существует никакого каталога 2.0/. Это драгоценный камень, который rails устанавливает как его зависимость от Gemfile:

GEM
  remote: https://rubygems.org/
  specs:
     ... many gems here
     mysql2 (0.3.11-x86-mingw32)
     ... many gems here
DEPENDENCIES
  ...
  mysql2
  ...

Это то, что находится в этом файле 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

Очевидно, что он принимает текущий номер версии Ruby и использует его как сегмент пути для достижения некоторого файла mysql2. Фактически это файл mysql2.so. Поскольку я использую Ruby 2.0.0, сегмент пути 2.0:

mysql2/2.0/mysql2

Хорошо, теперь посмотрим, как выглядит этот каталог mysql2-0.3.11-x86-mingw32 gem:

dir: C:\Ruby200\lib\ruby\gems\2.0.0\gems\mysql2-0.3.11-x86-mingw32\lib\mysql2\

enter image description here

Отсутствует каталог 2.0/.

Я знаю вопрос о libmysql.dll. У меня есть это в моем C:\Ruby200\bin. Это не помогает.

Я прочитал этот ответ qaru.site/info/16480/... от создателя RubyInstaller. Я попытался, но это не помогло. Он работает для Ruby 1.9.3, потому что существует каталог 1.9/. Но это не работает для Ruby 2.0.0.

Как его решить?


UPD 1:

Благодарим вас за ответ . Я пробовал. К сожалению, у меня ошибка ERROR: Failed to build gem native extension.:

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...

В нем говорится:

Сначала вы должны установить средства разработки.

Но у меня установлен полный DevKit, RubyInstaller устанавливает его. Не могу понять, что еще нужно.

Я уже опубликовал вопрос на странице mysql2 GitHub https://github.com/brianmario/mysql2/issues/364. Пока нет ответов.

Ответ 1

Имела ту же самую проблему в Windows 7 x64 с Ruby 2.0.0 и DevKit 4.7.

Следующие шаги помогли мне.

Или даже короче:

gem install mysql2 --platform = ruby ​​- --with-opt-dir = "C:\connector-6.0.2"

Ответ 2

удалить mysql2-0.3.11-x86-mingw32, gems, скомпилированный до Ruby200, не будет работать. Вы должны скомпилировать его самостоятельно. Если вы запустите gem uninstall mysql2 и там есть не скомпилированная версия, а затем просто удалите mysql2-0.3.11-x86-mingw32 - скомпилированную версию else...

Установка gem install mysql2 --platform=ruby. это сработает.

Следуйте этому руководству по установке devkit http://rubyonwindowsguides.github.com/book/ch02-04.html.

Затем повторите попытку.

Ответ 3

Точно такое же поведение, когда я пытаюсь установить Redmine на Windows XP

  • Когда я пытаюсь сделать "rake generate_secret_token", я получил "не могу загрузить такой файл - mysql2/2.0/mysql2 (LoadError) "
  • и когда я пытаюсь восстановить mysql2 с помощью --platform = ruby, я получил то же сообщение, что и вы зеленый.

на данный момент, я застрял там... но если у кого-нибудь есть что-то, что позволит мне двигаться вперед, это будет очень приветствоваться. Я также буду информирован

Antoine

Ответ 4

Я почти сделал то же самое, что описал @odiszapc. Удалите старый gem, загрузите mysql-connector-c-noinstall, unzip, но, наконец, я использовал эту команду для сборки родной жемчужины:

gem install mysql2 --platform=ruby -- --with-opt-dir=/c/connector-6.0.2

(Если вы используете git - bash, тогда вы можете использовать синтаксис каталога стиля unix.)

Ответ 5

Скопируйте пасту с этой ссылки: https://github.com/brianmario/mysql2/issues/359. Это сработало для меня.


Если после установки драгоценного камня вы получите сообщение об ошибке:

"Указанный модуль не найден. С:/Devel/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.11/lib/mysql2/mysql2.so"

Это можно устранить, скопировав libmysql.dll в папку Ruby bin.