Heroku共有データベースの1つの代替方法は、別のデータベースをAWS(自分のEC2サーバーまたはRDSデータベース)のどこかで使用することです。
ただし、共有データベースを使用したい場合は、Heorkuでdbスクリプトを実行する方法が必要です。これを行うにはいくつかの方法があります。 Play Evolutionsは1つのオプションですが、それらを使用したくないので、iBatis ScriptRunnerのようなものを使用できます。 SQLスクリプトを実行できるシンプルなJavaアプリケーションを作成します。ここでは本当に簡単な例です:
String dbUri = System.getenv("DATABASE_URL");
Class.forName("org.postgresql.Driver");
String username = dbUri.getUserInfo().split(":")[0];
String password = dbUri.getUserInfo().split(":")[1];
String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath() + "?user=" + username + "&password=" + password;
Connection connection = DriverManager.getConnection(dbUrl);
InputStreamReader inputStreamReader = new InputStreamReader(ClassLoader.getSystemResourceAsStream(sqlFile));
Reader reader = new BufferedReader(inputStreamReader);
ScriptRunner scriptRunner = new ScriptRunner(connection, false, true);
scriptRunner.runScript(reader);
ただ、どこかのアプリのディレクトリで、そのクラスのようなものを置くと、その後のようなもので、それを実行します。https://github.com/ddollar/heroku-sql-console:私はこの1つを使用し
heroku run "java -cp lib/postgres.jar:tmp/classes foo.SchemaCreator"
PRODのDEVおよびevolutionsでddlアップデートを使用できませんか? –
@マリアス "問題"は、私がevolutionsスクリプトを作成すると、PlayもDEVでそれらを実行するということです。また、問題を回避するため、開発者の変更を最初にテストできるようにしたい。 –
さて、あなたのコードが実稼働の準備が整うまで、再生専用のソリューションはHibernate DDLを使うことになると思います。そして、あなたはあなたの進化をテストするためにFixturesで新しいデータベースを作成する(または以前のスナップショットを復元する)でしょう。 –