Skip to content

Cake Schema Migrations

franzem edited this page Oct 28, 2011 · 3 revisions

If you would like to make sure that Capcake also makes the necessary database changes:

from your APP folder, run cake schema generate, choose [O]verwrite add/commit/push those changes to GITHub

add the following task to your config/deploy.rb file:

namespace(:customs) do
  task :schema, :roles => :app, :only => {:primary => true}  do
    run  run "TERM='dumb' && export TERM && /var/www/sites/cakephp/cake/console/cake -app #{deploy_to}/current schema update" do |ch, stream, out|
    ch.send_data "y"+"\n" if out =~ /Are you sure you want to alter the tables/
    print out
    end
  end
end

after "deploy:symlink", customs:schema"

the ch.send_data is required to answer the prompt 'y' and print out is required so you can see what the task has done

The " :only => {:primary => true} " is important if you are running multiple servers with MySQL replication. Without this the schema is updated twice, leading to conflicts in the slave DB's and throwing the replication out.

Clone this wiki locally