Сиквел не работает с Postgres - PullRequest
1 голос
/ 01 декабря 2010

Я пытаюсь перенести свои приложения на Rails в PostGreSql, чтобы работать в той же среде, что и на heroku ...

Я установил postgres, pg и postgres-pr нормально, но яЯ не могу заставить Taps вытащить мои базы данных из Heroku на мой сервер postgresql.

Мои приложения Rails легко подключаются к базе данных.

Когда я запускаю IRB, вот что я получаю:

>> 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/sequel-3.17.0/lib/sequel/core.rb:289:in `postgres'
    from (irb):3
>> 

Я не понимаю, что происходит не так.

У кого-нибудь есть идея?


Это то, что я понимаю, Джереми

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)

Я не уверен, что понимаю, что вы подразумеваете под "Проверьте pg.rb или postgres.rb где-нибудь на вашем пути"

Должен ли я сканировать все каталоги в моем $ PATH и искатьнежелательный файл pg.rb или postgres.rb?


Это странно, потому что я установил pg и postgre

Вот что я только что запустил

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$ 

Ответы [ 3 ]

3 голосов
/ 22 февраля 2011

Я столкнулся с точно такой же проблемой, пытаясь запустить heroku db: pull в мою локальную базу данных postgresql, используя гем pg. Случайным образом удалось решить проблему, удалив следующие драгоценные камни:

activerecord-jdbc-adapter 
activerecord-jdbcpostgresql-adapter

Попробовал еще раз после удаления этих драгоценных камней и сумел успешно вытащить из героку. Попробуйте проверить файл gem на наличие любых драгоценных камней, относящихся к postgres, кроме вашего pg gem, и удалите его. Всего наилучшего

1 голос
/ 03 декабря 2010

Если вы посмотрите исходный код адаптера *1001* postgres, вы увидите, что он пытается загрузить камень pg Ruby, за которым следует камень postgres (расставленный по приоритету в этом порядке).Согласно вашему выводу ruby -rubygems -rpg -e "p PGError" У вас нет pg гема, и при этом у вас не установлен postgres гем в вашей системе.

Убедитесь, что вы запустили gem install pg и попробуйте эту строкуопять же, если это не сработает, это становится проблемой Rubygems, а не проблемой сиквела.Если вы можете загрузить pg, тогда будет определено PGError.

1 голос
/ 01 декабря 2010

По какой-то причине любой требуемый вам файл postgres или pg не определяет класс PGError. Найдите где-нибудь на вашем пути файл pg.rb или postgres.rb.

Что происходит, когда вы выполняете следующие действия:

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