开发者

Sequel not working with postgres

开发者 https://www.devze.com 2023-01-28 00:29 出处:网络
I\'m trying to migrate my Rails apps to PostGreSql in order to work in the same environnement as on heroku...

I'm trying to migrate my Rails apps to PostGreSql in order to work in the same environnement as on heroku...

I installed postgres, pg, and postgres-pr fine on my mac but I can't get Taps to pull my databases off from Heroku to my postgresql server.

My Rails Apps connect seamlessly to the database.

When I run into the irb this is what I get:

>> require "rubygems"
=> false
>> require "sequel"
=> true
>> DB = Sequel.postgres
NameError: uninitialized constant Sequel::Postgres::PGError
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/adapters/postgres.rb:89
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `k_require'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:249:in `tsk_require'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:72:in `check_requiring_thread'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:69:in `synchronize'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:69:in `check_requiring_thread'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:249:in `tsk_require'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/database/connecting.rb:25:in `adapter_class'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/database/connecting.rb:63:in `connect'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:119:in `connect'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.17.0/lib/sequel/core.rb:282:in `adapter_method'
    from /Library/Ruby/Gems/1.8/gems/seque开发者_如何学Gol-3.17.0/lib/sequel/core.rb:289:in `postgres'
    from (irb):3
>> 

I don't understand what's going wrong.

Does anybody have an idea?


This is what I get Jeremy

BigMac:~ jp$ ruby -rubygems -rpg -e "p PGError"
ruby: no such file to load -- pg (LoadError)
BigMac:~ jp$ ruby -rubygems -rpostgres -e "p PGError"
ruby: no such file to load -- postgres (LoadError)

I'm not sure to understand what you mean by "Check for a pg.rb or postgres.rb somewhere in your path"

Should I scan all the directories in my $PATH and look for an unwanted pg.rb or postgres.rb file?


That's weird because I did install pg and postgre

Here is what I just ran

BigMac:/ jp$ sudo gem install pg
Password:
Building native extensions.  This could take a while...
Successfully installed pg-0.10.0
1 gem installed
Installing ri documentation for pg-0.10.0...
Installing RDoc documentation for pg-0.10.0...
BigMac:/ jp$ ruby -rubygems -rpg -e "p PGError"
ruby: no such file to load -- pg (LoadError)
BigMac:/ jp$ 


I was running into the exact same problem trying to run heroku db:pull to my local postgresql database using the pg gem. Randomly ended up fixing the problem by removing the following gems:

activerecord-jdbc-adapter 
activerecord-jdbcpostgresql-adapter

Tried it again after removing those gems and managed to pull from heroku successfully. Try checking your gem file for any gems that relate to postgres other than your pg gem and remove it. All the best


For some reason, whatever postgres or pg file you are requiring does not define the PGError class. Check for a pg.rb or postgres.rb somewhere in your path.

What happens when you ruby the following:

ruby -rubygems -rpg -e "p PGError"
ruby -rubygems -rpostgres -e "p PGError"


If you check out the postgres adapter source code, you can see it attempts to load the pg Ruby gem followed by the postgres gem (prioritized in that order). According to your output of ruby -rubygems -rpg -e "p PGError" You don't have the pg gem, nor do you have the postgres gem installed on your system.

Make sure you run gem install pg and try that line again, if that doesn't work it becomes a Rubygems issue and not a Sequel issue. If you're able to load pg then PGError will be defined.

0

精彩评论

暂无评论...
验证码 换一张
取 消