2010-01-17 17 views
5

Estoy ejecutando Ruby 1.9 (ruby 1.9.1p376 (2009-12-07 revisión 26041) [i386-darwin10]) en Slow Leopard (instalado a través de MacPorts).Vanilla Acceso a MySQL desde Ruby 1.9 en Snow Leopard

Luego instalado la biblioteca de cliente de Ruby MySQL a través de MacPorts: instalar RB19-mysql

intentar utilizarlo me sale el siguiente error:

 
db.rb:4:in `initialize': wrong number of arguments(4 for 0) (ArgumentError) 
    from db.rb:4:in `new' 
    from db.rb:4:in `' 

Mi código:

require 'mysql' 
require 'pp' 

dbh = Mysql.new("localhost", "testuser", "testpass", "test") 
puts "Server version: " + dbh.get_server_info 

Parece que me falta algo muy básico aquí.

¿Instalé la biblioteca cliente correcta? ¿Lo estoy usando correctamente? ¿Me faltan algunas otras dependencias?

Agradecería que alguien me señale la dirección correcta.

Gracias!

+4

¿Es "Slow Leopard" un chiste de OS X, o un error tipográfico? Si es un error tipográfico, ¿es un error freudiano? :) –

+0

Slow err Snow Leopard es lo suficientemente rápido para mí ... Typo de hecho :) – deepakg

+0

Pero puede ser más lento que Win XP ... – Jaryl

Respuesta

0

Nunca he escrito una línea de Ruby en mi vida, así que tal vez me avergonzaré, pero ¿no tienes que inicializar primero Mysql? Estoy bastante seguro de que la función espera 0 parámetros significa que todavía no existe.

En el archivo de prueba del paquete que mencionas (Me tienes curiosidad), veo la línea siguiente:

assert_nothing_raised{@m = Mysql.init} 

su sintaxis parece ser correcto, sin embargo. Del mismo archivo de prueba

assert_nothing_raised{@m = Mysql.new(@host, @user, @pass, @db, @port, @sock, @flag)} 

yo supongo que tiene que hacer una primera Mysql.init().

Si me equivoco, hágamelo saber y eliminaré la respuesta.

+0

Sin suerte. db.rb: 4: en '

': método indefinido' init' para Mysql: Class (NoMethodError) Mysql.init() – deepakg

+0

Entonces es posible que tenga el paquete incorrecto instalado. O necesita inicializar o cargar esa clase de alguna forma que desconozco. ¡Demasiado! –

1

Lo que estamos buscando es:

dbh = Mysql.real_connect("localhost", "testuser", "testpass", "test") 
0

Su código es sólida a mí; coincide con los ejemplos dados en la página de inicio rb19-mysql muy bien.

my = Mysql.new(hostname, username, password, databasename) 
st = my.prepare("insert into tblname (col1,col2,col3) values (?,?,?)") 
st.execute("abc",123,Time.now) 
st.prepare("select col1,col2,col3 from tblname") 
st.execute 
st.fetch # => ["abc", 123, #<Mysql::Time:2005-07-24 23:52:55>] 
st.close 

Lo que parece indicar que probablemente haya algo no del todo correcto con la instalación del puerto. Hubo todo tipo de problemas con los MacPorts que no funcionaban correctamente después de las actualizaciones de Snow Leopard. ¿Eres víctima de esto? Tuve que reconstruir todos mis puertos antes de que funcionaran correctamente.

También (y sé que esto es como religión para algunas personas), es posible que desee considerar anular la versión de MacPort y simplemente agarrar la gema de MySql. Por alguna razón, usar las gemas ha sido una experiencia mucho más placentera para mí.

Espero que ayude - ¡buena suerte!

Cuestiones relacionadas