I have something like the following defined

desc 'prompt are you sure'
task :are_you_sure do
  unless ENV['FORCE'] == 'true'
    puts ""
    puts "THIS WILL BLOW AWAY THE DATABASE"
    puts "hit enter to continue (control c to abort)"
    puts ""
    STDIN.read(1)
  end
end

task :refresh => %w(are_you_sure db:pull db:convert db:test:prepare)

rake db:refresh prompts
rake db:refresh FORCE=true does not

Or if you wanted to require FORCE=true, you can do the following:

desc 'require force param'
task :require_force do
  raise "This modifies production. To run, please specify FORCE=true" unless 
ENV['FORCE'] == 'true'
end


--K

On Mar 25, 2010, at 11:12 AM, Mike Doel wrote:

> On Mar 25, 2010, at 10:55 AM, Sean Schofield wrote:
> 
>> I'm loving the heroku db:pull stuff but its a bit dangerous if you
>> accidentally run db:push on a production system.  Would it be possible
>> to have db:push warn you that the remote database is not empty?  Maybe
>> something like the following:
>> 
>> WARNING: Remote database is not empty.  Are you sure you want to
>> replace its contents with the contents of your local database?  If so
>> please use heroku db:push with the --force option.
> 
> We tend to use rake tasks for pushing/pulling instead of using the heroku gem 
> directly.  Something like:
> 
> namespace :db do
>  task :refresh => ['db:pull','db:convert','db:test:prepare']
>  task :pull => [:drop, :create] do
>    system 'heroku db:pull'
>  end
> 
>  # Include in here any rake tasks needed to seed or modify data for
>  # current iteration
>  task :convert => ['db:migrate']
> end
> 
> That's for pulling instead of pushing (now that we're live, we never push - 
> only migrate/convert).
> 
> Once you get in the habit of doing 'rake db:refresh' instead of 'heroku 
> db:pull', it becomes natural.
> 
> You could build a rake task that wraps db:push and warns you before doing its 
> thing.
> 
> Mike
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Heroku" group.
> To post to this group, send email to her...@googlegroups.com.
> To unsubscribe from this group, send email to 
> heroku+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/heroku?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To post to this group, send email to her...@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.

Reply via email to