Mi tegyünk ha a Rails(2.1) logjában ilyen üzenetekkel találkozunk:
DEPRECATION WARNING: You're using the Ruby-based MySQL library that ships with Rails. This library will be REMOVED FROM RAILS 2.2. Please switch to the offical mysql gem: `gem install mysql` See http://www.rubyonrails.org/deprecation for details. (called from mysql_connection at /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/mysql_adapter.rb:81)
A MySQL adatbáziskezelő pedig már nem is használható a Rails 2.2-es verziójától a MySQL Gem megléte nélkül.
A Ruby ugyanis bár rendelkezik a maga kis mysql lib-implementációjával, csakhogy a MySQL-es fiúk sem pihentek és kiadták a saját verziójukat, ami jóval gyorsabb. A Rails tehát szeretné ezt használni.
sudo gem install mysql
De a gem csak nem fordul mivel explicit meg kell adnunk a mysql-dev fájlok - C header fájlok - helyét. Próbálkozzunk a mysql helyének a megadásával:
sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
Csak nem jó, bővebben:
sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Majdnem, csak ekkor a fordítás elszáll ezzel:
mysql.c: In function 'Init_mysql': mysql.c:2015: error: 'ulong' undeclared (first use in this function)
De úgy tűnik nem vagyunk ezzel egyedül, mivel itt olvashatunk egy lehetséges megoldást. A probléma részletesen.
Próbáljuk meg magunk fordítani, azzal, hogy előbb lépjünk be a usr/local/lib/ruby/gems/1.8/gems/mysql-2.7/ könyvtárba, majd adjuk hozzá a következő sort a mysql.c fájlhoz:#define ulong unsigned long
Majd fordítsuk manuálisan:
sudo ruby ./exconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config sudo make
Tesztelés: Nos, mint azt az elsőként linkelt bejegyzés írója is írja, nem fut le a ./test.rb. Rossz felhasználóval akar csatlakozni. A fájlokat vizsgálva kiderül, hogy nem veszi át a paramétereket. Manuálisan beillesztve a paraméteket(host,user,pass) működik, csak pár teszt hasal el; long, meg bináris konverziókon, gondolom ez architektúrális probléma, ettől még mennie kell...
Telepítés:
sudo make install
Ha a Rails és a Ruby tovább panaszkodna, hogy nem találja a gem-et próbáljuk meg a következőt:
/usr/bin/install -c -m 0755 mysql.bundle /usr/local/lib/ruby/site_ruby/1.8/i686-darwin8.11.1
Ellenőrzés:
irb irb(main):001:0>require 'mysql' => true