11155
(-- --)
December 17, 2010, 5:02pm
1
In the past, I've used mysql with rails without problem. I need to work
with postgresql, but I'm having trouble getting it working. I've seen
conflicting reports on what gems are needed. My latest install was
sudo gem install postgres --
--with-pgsql-include-dir=/Library/PostgreSQL8/include
--with-pgsql-lib-dir=/Library/PostgreSQL8/lib
(note: I did this blindly. It's about my 6th try to get proper gems in
place)
I'm running Rails 2.3.8 and PostgreSQL 8.4.2
My .yml configuration is
development:
adapter: postgresql
database: movies
username: michael2
port: 5432
allow_concurrency: true
encoding: SQL_ASCII
When I try to do a test connect with rake db:migrate, I get the
following:
rake db:migrate --trace
(in /oldhome/michael/projects/movies)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
syntax error on line 3, col 9: ` adapter: postgresql'
/usr/lib/ruby/1.8/yaml.rb:133:in `load'
/usr/lib/ruby/1.8/yaml.rb:133:in `load'
In the past, I've used mysql with rails without problem. I need to work
with postgresql, but I'm having trouble getting it working. I've seen
conflicting reports on what gems are needed. My latest install was
sudo gem install postgres --
--with-pgsql-include-dir=/Library/PostgreSQL8/include
--with-pgsql-lib-dir=/Library/PostgreSQL8/lib
(note: I did this blindly. It's about my 6th try to get proper gems in
place)
Not your error, but for what it's worth, I'm using the 'pg' gem without any issues.
I'm running Rails 2.3.8 and PostgreSQL 8.4.2
My .yml configuration is
development:
adapter: postgresql
database: movies
username: michael2
port: 5432
allow_concurrency: true
encoding: SQL_ASCII
When I try to do a test connect with rake db:migrate, I get the
following:
rake db:migrate --trace
(in /oldhome/michael/projects/movies)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
syntax error on line 3, col 9: ` adapter: postgresql'
/usr/lib/ruby/1.8/yaml.rb:133:in `load'
/usr/lib/ruby/1.8/yaml.rb:133:in `load'
---------
Can anyone offer some help? Thanks much
Rails is failing on a syntax error in your database.yml file. It has nothing to do with PostgreSQL at this point.
My guess is that instead of two leading spaces on that line you've got a tab. Or some other unicode character pretending to be a space...
Fix that and see what happens...
-philp
11155
(-- --)
December 17, 2010, 5:58pm
3
Philip Hallstrom wrote in post #969102:
Rails is failing on a syntax error in your database.yml file. It has
nothing to do with PostgreSQL at this point.
My guess is that instead of two leading spaces on that line you've got a
tab. Or some other unicode character pretending to be a space...
Fix that and see what happens...
-philp
That certainly changed the result. Now it's
rake db:migrate --trace
(in /oldhome/michael/projects/movies)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
uninitialized constant
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::PGconn
11155
(-- --)
December 17, 2010, 6:41pm
5
Philip Hallstrom wrote in post #969122:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::PGconn
Try the 'pg' gem.
I just installed it. Same result.
I'm not sure my gem is installing correctly, though - or if there is
something else needed. Note the following:
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> cn = PGconn.open(:dbname => 'movies')
NameError: uninitialized constant PGconn
from (irb):2
I really do appreciate this help.
11155
(-- --)
December 17, 2010, 8:50pm
6
Michael Satterwhite wrote in post #969123:
Philip Hallstrom wrote in post #969122:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::PGconn
Try the 'pg' gem.
I just installed it. Same result.
I'm not sure my gem is installing correctly, though - or if there is
something else needed. Note the following:
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> cn = PGconn.open(:dbname => 'movies')
NameError: uninitialized constant PGconn
from (irb):2
That is strange. Maybe try to check which constants where added
when you execute the "require 'pg'" command ?
$ irb
ruby-1.9.2-p0 > c = Object.constants ; nil #=> nil (remember constants)
ruby-1.9.2-p0 > require 'pg' #=> true
ruby-1.9.2-p0 > Object.constants - c # which constants where added?
=> [:ConditionVariable, :Queue, :SizedQueue, :Etc, :RbConfig, :Config,
:CROSS_COMPILING, :Date, :Pathname, :PGError, :PGconn, :PGresult]
ruby-1.9.2-p0 > PGconn #=> PGconn (constant is defined )
ruby-1.9.2-p0 > cn = PGconn.open(:dbname => 'movies')
PGError: could not connect to server: No such file or directory
...
HTH,
Peter
11155
(-- --)
December 17, 2010, 9:57pm
7
Peter Vandenabeele wrote in post #969157:
That is strange. Maybe try to check which constants where added
when you execute the "require 'pg'" command ?
$ irb
ruby-1.9.2-p0 > c = Object.constants ; nil #=> nil (remember constants)
ruby-1.9.2-p0 > require 'pg' #=> true
ruby-1.9.2-p0 > Object.constants - c # which constants where added?
=> [:ConditionVariable, :Queue, :SizedQueue, :Etc, :RbConfig, :Config,
:CROSS_COMPILING, :Date, :Pathname, :PGError, :PGconn, :PGresult]
ruby-1.9.2-p0 > PGconn #=> PGconn (constant is defined )
ruby-1.9.2-p0 > cn = PGconn.open(:dbname => 'movies')
PGError: could not connect to server: No such file or directory
...
HTH,
Peter
First, I like your way of checking the constants. Being dense, I did
that manually when I had to - thanks much!
Now, something is DEFINITELY wrong. Here is the result of my run:
irb(main):001:0>c = Object.constants
---whole bunch of constants displayed ---
irb(main):002:0> require 'pg'
=> true
irb(main):003:0> Object.constants - c
=>
What in heaven's name could cause this?
---Michael
11155
(-- --)
December 17, 2010, 10:04pm
8
Michael Satterwhite wrote in post #969166:
irb(main):001:0>c = Object.constants
---whole bunch of constants displayed ---
irb(main):002:0> require 'pg'
=> true
irb(main):003:0> Object.constants - c
=>
What in heaven's name could cause this?
---Michael
More information:
I just uninstalled gem 'pg'. I then executed the following:
irb
irb(main):001:0> require 'pg'
=> true
In other words, it is still finding 'pg' after uninstalling the gem.
That's likely the problem. How can I find out where this is coming from
so I can get rid of it and reinstall pg?
As always, thanks to you experts.
11155
(-- --)
December 17, 2010, 10:28pm
9
Michael Satterwhite wrote in post #969123:
Philip Hallstrom wrote in post #969122:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::PGconn
Try the 'pg' gem.
I just installed it. Same result.
I'm not sure my gem is installing correctly, though - or if there is
something else needed. Note the following:
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> cn = PGconn.open(:dbname => 'movies')
NameError: uninitialized constant PGconn
from (irb):2
Actually ... are you using ruby 1.8.x ?
Is that line
irb(main):001> require 'pg'
really your first line in the irb session ?
Should you not do
require 'rubygems'
first ? (IIRC, required in 1.8.x but no longer in 1.9.x)
My previous test was on ruby 1.9.2 and may have confused
both of us (sorry for that ...).
In ruby 1.8.7 (system ruby), I see this:
peterv@ASUS:~$ rvm use
Now using system ruby. # which 1.8.7.249-2 on Ubuntu 10.04
peterv@ASUS:~$ gem list | grep pg
pg (0.10.0)
peterv@ASUS:~$ irb
irb(main):001:0> require 'pg' # should NOT work yet
LoadError: no such file to load -- pg
from (irb):1:in `require'
from (irb):1
irb(main):002:0> require 'rubygems'
=> true
irb(main):003:0> require 'pg'
=> true
irb(main):004:0> Object.constants.grep(/PG/)
=> ["PGconn", "PGresult", "PGError"]
HTH,
Peter
11155
(-- --)
December 17, 2010, 10:39pm
10
Peter Vandenabeele wrote in post #969175:
Michael Satterwhite wrote in post #969123:
Philip Hallstrom wrote in post #969122:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::PGconn
Try the 'pg' gem.
I just installed it. Same result.
I'm not sure my gem is installing correctly, though - or if there is
something else needed. Note the following:
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> cn = PGconn.open(:dbname => 'movies')
NameError: uninitialized constant PGconn
from (irb):2
Actually ... are you using ruby 1.8.x ?
Is that line
irb(main):001> require 'pg'
really your first line in the irb session ?
Should you not do
require 'rubygems'
first ? (IIRC, required in 1.8.x but no longer in 1.9.x)
I have the environment variable
RUBYOPT=rubygems
set. This causes 1.8.x to automatically set rubygems as in 1.9.x.
11155
(-- --)
December 17, 2010, 10:47pm
11
Michael Satterwhite wrote in post #969181:
Peter Vandenabeele wrote in post #969175:
Michael Satterwhite wrote in post #969123:
...
I just installed it. Same result.
I'm not sure my gem is installing correctly, though - or if there is
something else needed. Note the following:
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> cn = PGconn.open(:dbname => 'movies')
NameError: uninitialized constant PGconn
from (irb):2
Actually ... are you using ruby 1.8.x ?
Is that line
irb(main):001> require 'pg'
really your first line in the irb session ?
Should you not do
require 'rubygems'
first ? (IIRC, required in 1.8.x but no longer in 1.9.x)
I have the environment variable
RUBYOPT=rubygems
set. This causes 1.8.x to automatically set rubygems as in 1.9.x.
Ah, thanks for that info.
It works that way here too.
peterv@ASUS:~$ export RUBYOPT=rubygems
peterv@ASUS:~$ echo $RUBYOPT
rubygems
peterv@ASUS:~$ irb
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> Object.constants.grep(/PG/)
=> ["PGconn", "PGresult", "PGError"]
Peter
11155
(-- --)
December 17, 2010, 10:52pm
12
Peter Vandenabeele wrote in post #969183:
Ah, thanks for that info.
It works that way here too.
peterv@ASUS:~$ export RUBYOPT=rubygems
peterv@ASUS:~$ echo $RUBYOPT
rubygems
peterv@ASUS:~$ irb
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> Object.constants.grep(/PG/)
=> ["PGconn", "PGresult", "PGError"]
Actually, yours works much better ... mine isn't working, remember. <g>
Any idea of how I can find where that bogus 'pg' is coming from? The gem
isn't installed anymore, but "require 'pg'" still returns true - loading
no constants.
11155
(-- --)
December 17, 2010, 11:03pm
13
Michael Satterwhite wrote in post #969184:
Peter Vandenabeele wrote in post #969183:
Ah, thanks for that info.
It works that way here too.
peterv@ASUS:~$ export RUBYOPT=rubygems
peterv@ASUS:~$ echo $RUBYOPT
rubygems
peterv@ASUS:~$ irb
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> Object.constants.grep(/PG/)
=> ["PGconn", "PGresult", "PGError"]
Actually, yours works much better ... mine isn't working, remember. <g>
Any idea of how I can find where that bogus 'pg' is coming from? The gem
isn't installed anymore, but "require 'pg'" still returns true - loading
no constants.
Aha, this might hint where your seemingly
succeeded require is getting its input ?
After the require, the $LOAD_PATH has grown !
irb(main):004:0> puts $LOAD_PATH
/usr/local/lib/site_ruby/1.8
/usr/local/lib/site_ruby/1.8/i486-linux
/usr/local/lib/site_ruby/1.8/i386-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/1.8
/usr/lib/ruby/vendor_ruby/1.8/i486-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i486-linux
/usr/lib/ruby/1.8/i386-linux
.
=> nil
irb(main):005:0> require 'pg'
=> true
irb(main):006:0> puts $LOAD_PATH
/usr/lib/ruby/gems/1.8/gems/pg-0.10.0/bin
/usr/lib/ruby/gems/1.8/gems/pg-0.10.0/lib
/usr/lib/ruby/gems/1.8/gems/pg-0.10.0/ext
/usr/local/lib/site_ruby/1.8
/usr/local/lib/site_ruby/1.8/i486-linux
/usr/local/lib/site_ruby/1.8/i386-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/1.8
/usr/lib/ruby/vendor_ruby/1.8/i486-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i486-linux
/usr/lib/ruby/1.8/i386-linux
.
=> nil
Also, I had ran those 2 on my machine here (from the root directory):
peterv@ASUS:/$ find . -name 'pg.rb' 2>/dev/null
./home/peterv/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.10.0/lib/pg.rb
./usr/lib/ruby/gems/1.8/gems/pg-0.10.0/lib/pg.rb
peterv@ASUS:/$ find . -name 'pg.so' 2>/dev/null
and that seems correct:
* 1 time pg.rb in .rvm/gems for 1.9.2 (from the first example I showed)
* 1 time pg.rb in /user/lib/gems/1.8 ... (system ruby)
no files pg.so found.
A long shot, but you could try that too and compare ...
HTH,
Peter
11155
(-- --)
December 17, 2010, 11:45pm
14
Peter Vandenabeele wrote in post #969187:
Michael Satterwhite wrote in post #969184:
Peter Vandenabeele wrote in post #969183:
Ah, thanks for that info.
It works that way here too.
peterv@ASUS:~$ export RUBYOPT=rubygems
peterv@ASUS:~$ echo $RUBYOPT
rubygems
peterv@ASUS:~$ irb
irb(main):001:0> require 'pg'
=> true
irb(main):002:0> Object.constants.grep(/PG/)
=> ["PGconn", "PGresult", "PGError"]
Actually, yours works much better ... mine isn't working, remember. <g>
Any idea of how I can find where that bogus 'pg' is coming from? The gem
isn't installed anymore, but "require 'pg'" still returns true - loading
no constants.
Aha, this might hint where your seemingly
succeeded require is getting its input ?
After the require, the $LOAD_PATH has grown !
THANK YOU, THANK YOU, THANK YOU!!!!
This piece led me to a rogue gem that I'd installed when I was trying to
get started. The require 'pg' is now giving the proper results and the
test
rake db:migrate
connects to the database.
I *REALLY* appreciate this!
---Michael