Поддерживается ли в Windows гем dm_mysql_adapter от Datamapper? - PullRequest
1 голос
/ 17 ноября 2011

Я хочу еще поиграть с Ruby и в настоящее время, похоже, обладаю синатрой, но также хотел бы теперь получить данные из реляционной базы данных. Я обычно использую Mysql для тестовых приложений и пытался установить гемы, но получаю исключение, когда он пытается скомпилировать собственный гем do_mysql, на который он опирается.

У меня установлены собственные расширения, и они прекрасно работали для гема JSON, я помню, как читал где-то некоторое время назад, что do_mysql в настоящее время не поддерживается для Windows, так что мне просто интересно, так ли это до сих пор.

Использование ruby ​​1.9.2 в Windows 7 (устанавливается через установщик ruby ​​+ собственные расширения)

Вот исключение, если оно помогает:

C:\dump\ruby\DataMapperTest\gems>gem install dm-mysql-adapter-1.2.0.gem
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing dm-mysql-adapter-1.2.0.gem:
        ERROR: Failed to build gem native extension.

        C:/Tools/Ruby192/bin/ruby.exe extconf.rb
checking for my_global.h... no
checking for mysql.h... no
checking for main() in -llibmysql... no
checking for mysql_query() in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
checking for localtime_r()... no
checking for gmtime_r()... no
checking for mysql.h... no
checking for MYSQL_TYPE_STRING in mysql.h... no
checking for MYSQL_TYPE_BIT in mysql.h... no
checking for MYSQL_TYPE_NEWDECIMAL in mysql.h... no
checking for mysql_query() in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
checking for mysql_sqlstate() in mysql.h... no
checking for mysql_get_ssl_cipher() in mysql.h... no
checking for mysql_set_character_set() in mysql.h... no
checking for mysql_get_server_version() in mysql.h... no
checking for MYSQL_FIELD.charsetnr in mysql.h... no
creating Makefile

make
C:/Tools/Ruby192/bin/ruby -e "puts 'EXPORTS', 'Init_do_mysql'"  > do_mysql-i386-
mingw32.def
gcc -I. -IC:/Tools/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Tools/Ruby192/in
clude/ruby-1.9.1/ruby/backward -I/C/Tools/Ruby192/include/ruby-1.9.1 -I.   -O3 -
g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings
 -Wno-missing-field-initializers -Wno-long-long -Wall   -o do_common.o -c do_com
mon.c
gcc -I. -IC:/Tools/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Tools/Ruby192/in
clude/ruby-1.9.1/ruby/backward -I/C/Tools/Ruby192/include/ruby-1.9.1 -I.   -O3 -
g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings
 -Wno-missing-field-initializers -Wno-long-long -Wall   -o do_mysql.o -c do_mysq
l.c
do_mysql.c:5:19: fatal error: mysql.h: No such file or directory
compilation terminated.
make: *** [do_mysql.o] Error 1


Gem files will remain installed in C:/Tools/Ruby192/lib/ruby/gems/1.9.1/gems/do_
mysql-0.10.7 for inspection.
Results logged to C:/Tools/Ruby192/lib/ruby/gems/1.9.1/gems/do_mysql-0.10.7/ext/
do_mysql/gem_make.out

C:\dump\ruby\DataMapperTest\gems>

Mysql 5.5 Community Edition установлен и настроен, и Mysql был добавлен в системный PATH.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

DataMapper и DataObjects (нижний уровень, который подключается к БД) do работает в Windows.

Однако, похоже, что в do_mysql 0.10.7 отсутствует предварительно скомпилированный двоичный файл для платформы x86-mingw32:

http://rubygems.org/gems/do_mysql/versions

Вы можете скомпилировать do_mysql самостоятельно, используя интерфейс MySQL Connector / C, который не зависит от версии MySQL, установленной на вашем компьютере.

Пожалуйста, ознакомьтесь с этим сообщением в блоге, в котором приведены инструкции по установке:

http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/

Инструкции относятся к mysql gem, но его изменение на do_mysql должно работать (за исключением примера кода, специфичного для MySQL.

Надеюсь, это поможет.

0 голосов
/ 07 июня 2016

чтобы разграничить ответ Луиса, он выглядит примерно так:

gem install do_mysql --platform = ruby ​​- --with-mysql-dir = "C: / PROGRA ~ 1 / MySQL / MYSQLS~ 1.7 / "

где путь" mysql-dir "- это краткая версия каталога" MySQL Server 5.7 "в" C: \ Program Files "в системе x64.

...