2010-01-17 14 views
5

Używam Ruby 1.9 (ruby 1.9.1p376 (2009-12-07 rewizja 26041) [i386-darwin10]) na Wolnym Panelu (instalowanym przez MacPort).Waniliowy dostęp MySQL z Ruby 1.9 na Snow Leopard

Potem zainstalowanego klienta biblioteki Ruby MySQL za pośrednictwem MacPorts: zainstalować RB19-mysql

Próbuje go użyć otrzymuję następujący błąd:

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

Mój kod:

require 'mysql' 
require 'pp' 

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

Wygląda na to, że brakuje mi czegoś bardzo podstawowego.

Czy zainstalowałem odpowiednią bibliotekę klienta? Używam go poprawnie? Czy brakuje mi niektórych innych zależności?

Byłbym wdzięczny, gdyby ktoś wskazał mi właściwy kierunek.

Dzięki!

+4

Czy "Slow Leopard" to OS X w żartach, czy literówka? Jeśli to literówka, czy jest to freudiańska? :) –

+0

Slow err Snow Leopard jest wystarczająco szybki dla mnie .. Typo naprawdę :) – deepakg

+0

Ale może się wolniej niż Win XP ... – Jaryl

Odpowiedz

0

Nigdy nie napisałem linii Ruby w moim życiu, więc może mam zamiar się zawstydzić, ale czy nie musisz najpierw zainicjować Mysql? Jestem całkiem pewien, że funkcja oczekuje parametrów 0 oznacza, że ​​jeszcze nie istnieje.

W pliku testowego pakietu można wymienić (masz mnie ciekawi), widzę następujący wiersz:

assert_nothing_raised{@m = Mysql.init} 

składnia wydaje się być poprawne, jednak. Z tego samego pliku testowego

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

Przypuszczam trzeba zrobić Mysql.init() pierwszy.

Jeśli się mylę, daj mi znać, a ja usunę odpowiedź.

+0

Nie ma szczęścia. db.rb: 4: in '

': undefined metoda' init 'dla Mysql: Class (NoMethodError) Mysql.init() – deepakg

+0

Wtedy możesz mieć źle zainstalowany pakiet. Lub musisz zainicjować lub załadować tę klasę w jakiś sposób, o czym nie wiem. Szkoda! –

1

Czego szukasz:

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

Twój kod wygląda stałe do mnie; bardzo dobrze pasuje do przykładów podanych na stronie domowej rb19-mysql.

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 

Co mogłoby sugerować, że prawdopodobnie jest coś nie tak z instalacją portu. Pojawiły się różnego rodzaju problemy z MacPorts nie działa poprawnie po aktualizacji lampartów śnieżnych - czy padłeś ofiarą tego? Musiałem odbudować wszystkie moje porty, zanim one działały poprawnie.

Również (i wiem, że jest to jak religia dla niektórych osób), warto rozważyć rezygnację z wersji MacPort i po prostu pobrać klejnot MySql. Z jakiegokolwiek powodu używanie klejnotów było dla mnie o wiele przyjemniejszym doświadczeniem.

Nadzieję, że pomaga - powodzenia!

Powiązane problemy