DbCompile

Adds rake db:compile to your rails project tasks. This task can be used to compile views, functions, triggers, and more!

Install

script/plugin install git://github.com/redhatcat/dbcompile.git

Setup

Configuration is contained in one file, #{Rails.root}/db/compile.yml. In here, you describe the statement and dependencies. You can fine an example with comments {here}[http://github.com/redhatcat/dbcompile/blob/master/example/compile.yml].

The SQL scripts themselves are places in several directories under #{Rails.root}/db.

All of these scripts, with the exception of views, should be self replacing, e.g. you will want to use statements like CREATE OR REPLACE FUNCTION.

Note on views: View scripts should be written as everything after the AS keyword, i.e. write views as SELECTs. DbCompile will magically wrap the SELECT with CREATE OR REPLACE VIEW #{script_name} AS #{sql_source}.

Adding new SQL constructs

If you want something beyond a function, trigger, or view, DbCompile is easy to extend. Simply create a new class that extends DbCompile::Construct and require it in lib/dbcompile/transaction.rb. See the source of lib/dbcompile/view.rb and lib/dbcompile/construct.rb for reference.

How the dependencies work

The dependencies of a contruct determine the order of (re)creation. The consequences of not stating dependencies in the case of a view: