Gem mysql2

Witam wszystkich, zainteresowałem się trochę Railsami i Ruby’im więc próbuję coś stworzyć :wink:

Zainstalowałem Ruby 1.9.2, Gem’y i najnowsze railsy z gema. Próbuję stworzyć projekt na bazie MySQL (musi być MySQL ponieważ planuję stworzyć w Railsach pewną aplikację, która integruję się z innymi aplikacjami nie webowymi, m.in. grą) i stanąłem na ‘gem install mysql2’. Już dwie godziny szukam, próbuje i morduje się z tym, zainstalowałem DevKita, wgrałem liby, nagłówki i jestem teraz na tym:

[code]C:\Users\Snejk>gem install mysql2
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:/Ruby192/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:/Ruby192/bin/ruby
C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:368:in try_do': The complier failed to genera te an executable file. (RuntimeError) You have to install development tools first. from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:435:intry_link0’
from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:440:in try_link' from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:552:intry_func’
from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:797:in block in have_func' from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:693:inblock in checking_for’
from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:280:in block (2 levels) in postp one' from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:254:inopen’
from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:280:in block in postpone' from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:254:inopen’
from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:276:in postpone' from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:692:inchecking_for’
from C:/Ruby192/lib/ruby/1.9.1/mkmf.rb:796:in have_func' from extconf.rb:9:in

Gem files will remain installed in C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.
2.7 for inspection.
Results logged to C:/Ruby192/lib/ruby/gems/1.9.1/gems/mysql2-0.2.7/ext/mysql2/ge
m_make.out[/code]
Mój system to Win7 32bity. Nie wiem co teraz zrobić. W logach (ostatnia linijka) jest to co wyprintowało wyżej.

Pozdrawiam,
Snejk.

Witaj Snejk47 :slight_smile:

Miałem kiedyś podobny problem, rozwiązałem go instalując w linuxie odpowiednie pakiety :
sudo apt-get install libmysql-ruby libmysqlclient-dev
(bez tego instalując samego gem-a nie działało u mnie), poszukaj odpowiedników na swój system, może zadziała, a następnie dodając do Gemfile w projekcie
gem ‘mysql’
albo
gem ‘mysql2’

(nie pamiętam który u mnie działał, ale na pewno jeden z tych).

Przy okazji gorąco zachęcam zmianę systemu na któryś z unixopodobnych :slight_smile:

Pozdrawiam ! :slight_smile:
Michał

Nie chcę programować na Linuxie.
Już pisałem, że zainstalowałem te liby, o które prosił.
Gem ‘mysql’ się zainstalował bez problemu, a z ‘mysql2’ wychodzi to co wychodzi.

a sprawdzałeś czy działa z ‘mysql’ ?

W takim razie gem mysql2 to zaledwie pierwszy i dość lajtowy z problemów, jakie Cię czekają

Z tego co kiedyś znalazłem na necie (chyba na stackoverflow.com było) to mysql2 nie będzie działać na Windows. Zamiast tego spróbój ruby-mysql.
Poza tym: @Tomash +1 :slight_smile:

Niby wsparcie dla windowsa jest od roku https://github.com/brianmario/mysql2/issues/8 , nie ma też żadnych nowych zgłoszeń nt. wsparcia w windowsie. Jest za to link do jakiejś wersji binarnej dla wind: https://rubygems.org/gems/mysql/versions/2.8.1-x86-mingw32

Skorzytaj z mysql1

Taka ciekawostka:

[quote]Yeah… but why?

Someone: Dude, the Mysql gem works fiiiiiine.

Me: It sure does, but it only hands you nil and strings for field values. Leaving you to convert them into proper Ruby types in Ruby-land - which is slow as balls.

Someone: OK fine, but do_mysql can already give me back values with Ruby objects mapped to MySQL types.

Me: Yep, but it’s API is considerably more complex and can be ~2x slower.[/quote]