confirmo, "postgres" paquete no está actualizado, es necesario "PG".
Me tomó mucho tiempo obtener un básico select * from films
trabajando con ruby y postgres. Como soy amable, aquí está mi código:
preparación postgres (base de datos = megatest user = Roger pass = 123456 tabla = películas)
$ su postgres
psql
CREATE USER roger WITH PASSWORD '123456';
GRANT ALL PRIVILEGES ON DATABASE megatest to roger;
megatest=# GRANT SELECT ON films TO PUBLIC;
preparación kit PG
sudo gem install pg
Ruby Code
require 'pg'
conn=PGconn.connect(:hostaddr=>"127.0.0.1", :port=>5432, :dbname=>"megatest", :user=>"roger", :password=>'123456')
# or for a non IP address :host => 'my.host.name.com' instead of hostaddr
# run the query
res = conn.exec("SELECT * FROM films")
# Ran only once in order to get field Name
fieldArray=res.fields()
fieldArray.each do |elem|
print "elem="+elem+"\n"
end
# print data from the query
res.each{ |row|
puts "Code="+row["code"] +" title="+row["title"] +" did="+row["did"] +" date_prod="+row["date_prod"] +" kind="+row["kind"] +" len="+row["len"]
}
Resultados
[email protected]:/home/eblain/ruby# ruby postgresTest.rb
Code=UA502 title=Bananas did=105 date_prod=1971-07-13 kind=Comedy len=01:22:00
Code=UA503 title=Cowboy did=105 date_prod=1979-07-13 kind=Horror len=01:32:00
Code=UA544 title=YoBro did=105 date_prod=1981-07-13 kind=Action len=01:42:00
esto no tiene que ver con los rieles – providence
hmm, creo que todo el mundo está un poco confundido. Intento usar ActiveRecord solo, no en rieles. Sin embargo, estaré encantado de ver cualquier información sobre la conectividad de la base de datos en ruby, ya que frecuentemente encuentro que hay una mejor manera de implementar las cosas. También será un buen recurso para los lectores futuros. – providence
Puede usar ActiveRecord por separado de Rails, o usar otro ORM solo como Sequel o DataMapper. Yo prefiero Sequel; Recomiendo usar un ORM en lugar de codificar a mano el SQL para un DBM en particular. Si, en el futuro, necesita cambiar a un gestor de bases de datos diferente, es trivial con un ORM si lo admite. –