2011-07-29 4 views
2

postgresスキーマ(つまりschema_name.users)を使用するアプリケーションでrake db:schema:dumpを実行すると、dbユーザーの検索パスにある最初のスキーマのダンピングテーブルのみであるように見えます。複数のスキーマのテーブルを含める方法はありますか? rake db:schema:dumpに複数のpostgresスキーマを含めますか?

は違った問題を述べる:

createdb myapp 

psql myapp -U postgres -c "create table stuff" 
#=> creates table "stuff" in the public schema 

psql myapp -U postgres -c "create schema specific_thing" 

psql myapp -U postgres -c 'create table "specific_thing".users(id int)' 

createuser -U postgres -S -D -R special_user 

psql myapp -U postgres -c "grant all on schema specific_thing to special_user" 

psql myapp -U postgres -c "ALTER USER special_user SET search_path TO specific_thing,public" 

... 

development: 
    adapter: postgresql 
    database: stuff 
    username: special_user 
    password: 
    host: localhost 

... 

database.yml:で実行している:rake db:schema:dump

のみspecific_thingスキーマからusers talbeをダンプし、publicスキーマ内のすべてを無視します。

答えて

1

これは私が見つけたものです。私は私の前にコードを持っていないので、特に何かを指すことはできませんが、PostgresAdapterには、アダプタが利用可能な「テーブル」と考えるものを識別するコードがあります。アダプタは、常にパブリックスキーマ(パブリックは実際にはテーブルのリストを取得するクエリではハードコードされている)を扱うと仮定しているため、PostgresAdapterをサブクラス化して、あります。これは私のそこの道のほとんどを得た。克服するにはいくつかの障害がありましたが、この作品をパズルに合わせるとすべてがはっきりしました。間違いなくRailsのソースに時間を費やしていた。

+0

複数のスキーマをダンプできましたか? –

関連する問題