1

herokuと同じ環境で動作するように、RailsアプリをPostGreSqlに移行しようとしています...

postgres、pg、postgres-prをMacに正常にインストールしましたが、データベースをHerokuからpostgresqlサーバーにプルするためにTapsを取得できません。

MyRailsAppsはデータベースにシームレスに接続します。

私が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$ 
4

3 に答える 3

3

pg gem を使用して、heroku db:pull をローカルの postgresql データベースに実行しようとしたときに、まったく同じ問題が発生しました。次の宝石を削除することで、ランダムに問題を修正しました。

activerecord-jdbc-adapter 
activerecord-jdbcpostgresql-adapter

これらの gem を削除してから再試行し、heroku から正常にプルすることができました。pg gem 以外の postgres に関連する gem がないか gem ファイルを確認し、削除してみてください。ではごきげんよう

于 2011-02-22T09:40:14.043 に答える
1

何らかの理由で、必要な postgres または pg ファイルが PGError クラスを定義していません。パスのどこかに pg.rb または postgres.rb があるかどうかを確認します。

以下をルビするとどうなるか:

ruby -rubygems -rpg -e "p PGError"
ruby -rubygems -rpostgres -e "p PGError"
于 2010-12-01T15:32:45.917 に答える
1

postgres アダプターのソース コードを確認すると、 pgRuby gem の後にpostgresgem (この順序で優先順位が付けられています)をロードしようとしていることがわかります。ruby -rubygems -rpg -e "p PGError"You don't have the pggemの出力によるとpostgres、システムに gem がインストールされていません。

その行を実行gem install pgしてもう一度試してみてください。それが機能しない場合は、Sequel の問題ではなく Rubygems の問題になります。ロードできる場合はpg定義PGErrorされます。

于 2010-12-03T11:58:55.457 に答える