From the pg module doc, it seems like the right way to connect to a PG db is to use:
conn = PG::Connection.open(dbname: 'test')
However, I find other examples online which make use of the PG.connect method instead:
conn = PG.connect(dbname: 'testdb', user: 'janbodnar', password: 'pswd37')
Is there a difference between these two ways of connecting to a postgresql database? If yes, what is it? Is one way better than the other? What are the drawbacks / advantages of each method?
From the documentation for the PG module itself, you can see that PG.connect is a "convenience alias" for PG::Connection.new:
def self::connect( *args )
return PG::Connection.new( *args )
end
From the source code of PG::Connection, it's also clear that PG::Connection.open is an alias of PG::Connection.new:
void
init_pg_connection()
{
…
SINGLETON_ALIAS(rb_cPGconn, "open", "new");
…
}
So, all three are actually identical in terms of how they connect to the database. PG.connect adds the cost of one extra method call, since it internally calls PG::Connection.new.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With