EDIT: I got it to work, finally. I’m not sure what changed this time around, but here are some notes I made.
This was supposed to go out last Saturday, but my blog took precedence. Oh, that, and Fable 2. Shh.
If you’ve somehow found this post in search of an answer, I have nothing but a rant for you. If the post at Robby on Rails did not work… you’re out of luck, or you’ll have to keep going and finding a solution to the mess that I ran into while trying to use PostgreSQL as my database in Rails.
I must have read that post multiple times, trying to get this to work. I hope that there’s a fourth version of that post sometime in the future… I left a comment there:
I guess I’m waiting for the 4th version of this. I think the official gem now is “ruby-pg” at http://rubyforge.org/projects/ruby-pg.
Everything is perfectly installed, except for the PostgreSQL gem. I cannot get my first rake db:migrate to work properly. It keeps telling me to install the gem “activerecord-postgresql-adapter”, which I know doesn’t exist, and it’s just a general activerecord error. I’ve tried not only the “ruby-pg” gem, but also (the now older) “postgres” as well as the “pg” (I don’t know what this one is).
Are you still using the “postgres” gem? Are things working out?
I was looking forward to rocking out in PostgreSQL land this weekend, but spending hours and hours scouring the Internet… and nothing. I might think it’s because I’m running 8.3.4, the latest version. Anyone else having my problem?
And just underneath it, someone else seemed to be having the same problems (which kinda prompted me to write this in the first place).
I don’t even want to go and document the errors I’ve gotten… Yes, I know about the ARCHFLAG. I know about the –with-pgsql-include-dir and –with-pgsql-lib-dir. I tried binaries of each gem, and even compiling from source. Blah blah blah.
Let Me Show You, The Insanity… Or The Inanity…
I really wanted this post to be titled “PostgreSQL, Ruby, and Rails: WIN.” It just turned out that I couldn’t figure it all out. I felt pretty n00b after spending the better part of three days on this (two weekends, almost). Reading up on PostgreSQL, it just seemed much more open and fully featured. Being unable to actually get it working, I said, screw it, and went with MySQL (something that I’ve played around with before).
The last time I did this, it was before Rails 2.0. I remember it being fairly painless. But now, it seems like the most recent version of PostgreSQL (8.3.4) and the most recent version of Rails (2.1.1) doesn’t seem to work together all too well. I’m guessing it’s the gems, and so it might have to do with Ruby (1.8.7) also.
The PostgreSQL gems seemed to have undergone a couple of forks. I don’t have any problem with forking… but the naming of these gems are ridiculous. It doesn’t help that PostgreSQL is like the weirdest named SQL implementation out there (let me know if there’s something named weirder). Do you shorten PostgreSQL to pg? How about just postgres? Why not call it by the full name but lowercased, postgresql? Then you have to add the ruby portion: rb or ruby. While we’re at it, let’s also call the project name different from the actual gem name itself.
At least, this is how I see this insanity. It feels like there are at least four gems that do the same thing, regardless of them being out of date or not. (pg, postgres, postgres-pr, ruby-postgres…) I must have tried most of them, to no avail. In the end, it seems like “pg” is going to be the one to follow. I think. I’ll have to come back on this later whenever I feel like experimenting with PostgreSQL again.
From the actual PostgreSQL page on the Ruby on Rails Wiki (which is totally outdated at the time of this writing):
You can install a pure Ruby postgres driver called postgres-pr using Gems:
gem install postgres-pr Note that you still have to write adapter: postgresql and not adapter: postgres-pr in your database.yml.
A faster, native driver called “postgres” is also available. It can be installed with the command:
gem install postgres
What I Think Is The Right Gem
The wiki seems to be wrong, and I believe this to be correct (from the RubyForge page):
Ruby-pg provides the module “pg”, a Ruby interface to the PostgreSQL Relational Database Management System, which supersedes the old “postgres” module. This project also maintains fixes for the old “postgres” module.
Okay… so… “Ruby-pg” is the project name. They maintain two modules, “pg” and “postgres”, even though the packages themselves are called “ruby-pg” and “ruby-postgres”. ARGH.
So That’s It
Time to start rolling. For now, I’ll go the MySQL route. There’s a larger community of people using it, as with tools and documentation and such… I’m just a little bit slightly wary of the licensing of the two.