We've got our own set of rake tasks which I recently extracted into a
separate object so I could add tests and make them more modular. They
add a few features to the (awesome, stellar, beautiful) heroku deploy
process:

* "rake stage" pushes master to staging
* "rake deploy" pushes what's on staging to production, even if you've
done more work on master
* deploy (to staging or prod) sends email to a given list saying
what's changed since the last production deploy
* generates and deploys a "/version.txt" file with current git hash
and database migration version so you can verify what version is on
what server
* generalizable to other non-production apps (e.g. we use a separate
site for user testing)
* "rake stage_db" pulls the production DB locally then pushes it to
staging

There's still some proprietary stuff in there but with enough pressure
I could probably find the time to package it up on github...

I like Arron's idea of grabbing a bundle on every deploy too. We used
to grab the DB on every deploy (also "just in case") but the DB is too
big now for that to be feasible.

 - Alex


On Jun 25, 6:47 am, johnb <john.bey...@gmail.com> wrote:
> Arron,
>
> Could you share those rake tasks? Be interested in checking them out
>
> cheers,
>
> john
>
> On Jun 23, 5:58 am, Arron Washington <l33t...@gmail.com> wrote:
>
>
>
> > Nobody?
>
> > OK, I'll share what I do. :3
>
> > For an important project hosted on Heroku (that I don't want to go
> > down), I tend to wrap everything up in rake tasks that handle
> > deployment, caching assets on Amazon S3/Cloudfront, etc. As part of
> > these tasks, I also include the ability to roll back to a previous (or
> > arbitrary) Git commit. I use the 'git' gem to handle these commands
> > internally, and since there's always an official repo that isn't
> > hosted by Heroku, it's safe to nuke the Heroku repositories using the
> > '--force' flag when required. Once the tasks are developed and the app
> > is live, nobody is allowed to do a raw `git push` to the Heroku
> > remotes anymore.
>
> > We keep our environments/staging.rb as close to our environments/
> > production.rb as possible.
>
> > Deploy tasks also capture a Heroku bundle for each deploy, but I think
> > the Heroku bundles also take a snapshot of the database -- data is
> > generally not something we're willing to use during an emergency
> > recovery, so we don't use the bundles. They're there just in case.
>
> > On Jun 18, 7:49 pm, Neil Middleton <neil.middle...@gmail.com> wrote:
>
> > > Following on partly from my earlier email about support:
>
> > > We have an app that we've deployed a production and staging environment 
> > > for.
> > >  The idea being that all deployments go via staging prior to production 
> > > as a
> > > way of testing that Heroku is happy to spin up and 'accept' our 
> > > application
> > > (config is nearly always the issue).
>
> > > Question is, what steps do people do to prevent themselves from ending up
> > > with a production app that's failing to start?  I know some users are
> > > pushing a large amount of traffic where downtime is unacceptable, so what 
> > > do
> > > you do to protect yourself?  How do you recover if things go bad?
>
> > > For anyone to trust something as different as Heroku, I think you have to
> > > know how to get back to a working state asap without outside intervention
> > > where possible.

-- 
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