2013-04-11 2 views
32

私はHerokuアプリケーションのスキーマをTerminal(Mac OS X Lion)で表示しようとしていますが、ちょうどそのようなコマンドに遭遇しました。ターミナルではheroku run more db/schema.rbを実行しますが、古いスキーマバージョンが表示されるようです。私はHeroku dbを移行したばかりで、新しい列はリストされていないことに気付きました。端末でHerokuアプリケーションの現在のデータベーススキーマを表示するには?

私はHerokuのドキュメントに役立つものは見つけられません。 Herokuアプリケーションの現在のデータベーススキーマを表示するコマンドを誰かが知っていますか?

ところで、アプリのコードを継承して何らかの理由ですべてのマイグレーションファイルがコメントアウトされています(おそらく40+ファイルがあるので)。rake db:migrateをローカルに実行してスキーマを更新することはできません。したがって、私はHerokuアプリケーションのスキーマを直接見たいと思います。

提案がありますか?

答えて

66

heroku pg:psqlを実行してPostgresコンソールを起動し、\dを発行してすべてのテーブルを表示し、\d tablenameを発行して特定のテーブルの詳細を表示できます。レールスキーマの

+0

これは完璧です。ありがとうございました! – mmichael

+2

終了するには、「q」と打ち込んでEnterキーを押します。 –

24

、試してみてください。

$ heroku run "bundle exec rake db:schema:dump && cat db/schema.rb" 
+0

[Heroku docs](https://devcenter.heroku.com/articles/rake)は、「rake db:schema:dumpなど、ディスクに書き込むタスクはHerokuの一時ファイルシステムと互換性がありません」と述べています。このコマンドは失敗しませんか? – mmichael

+1

それは動作します。 'run' dynoが起動している間は、既存のファイルに依存することができます。これは本質的に 'cat''dになるのに十分な長さです。 – kch

+0

ベスト・アンサー:完全なHerokuスキーマを端末にコピーします – user3763682

1

あなたはrateauxを使用することができます。

rake db:view:schema 
関連する問題