Showing posts with label rake. Show all posts
Showing posts with label rake. Show all posts
Monday, April 22, 2013
A rake task to automate deployment and database migration to Heroku
One of my major annoyances with Heroku is that the deploy does not automatically run any database migrations.
Seriously?!
So I ran into this tonight when I am trying to explain to a seasoned SA that while Heroku automatically will recompile your assets for you it will not do the migrations. A Google turned up this Stackoverflow question which in turn led to this gist.
And I am excited to be trying it out.
Saturday, February 9, 2013
Heroku: Scaling Dynos at night and in the morning
I needed a rake task to auto scale Dynos on Heroku; wind them down at night and wind them up in the morning. I found this helpful post on Stackoverflow. I made a few modifications and would up with this:
It adjusts for the weekend to scale to a different level if you set the ENV varaible. Additionally here is how I set the Heroku config vars. The add command does them all at once but the remove goes through one by one, removes the VAR and restarts the app.
You will need the heroku-api gem. I also set the Gemfile entry to this:
Since the rake task is called twice a day there was no need to load the gem into memory for the rest of the time.
namespace :scale_dynos do
require 'heroku-api'
desc "scales up dynos"
task :up do
dyno_max = [6,0].include?(Time.now.wday) ? ENV['WEEKEND_DYNO_MAX'] : ENV['DYNO_MAX']
heroku = Heroku::API.new(:api_key => ENV['HEROKU_API_KEY'])
heroku.post_ps_scale(ENV['APP_NAME'], 'web', dyno_max.to_i)
end
desc "scales down dynos"
task :down do
dyno_min = ENV['DYNO_MIN']
heroku = Heroku::API.new(:api_key => ENV['HEROKU_API_KEY'])
heroku.post_ps_scale(ENV['APP_NAME'], 'web', dyno_min.to_i)
end
end
It adjusts for the weekend to scale to a different level if you set the ENV varaible. Additionally here is how I set the Heroku config vars. The add command does them all at once but the remove goes through one by one, removes the VAR and restarts the app.
heroku config:add DYNO_MIN=1 DYNO_MAX=25 WEEKEND_DYNO_MAX=1 APP_NAME=<your app name> HEROKU_API_KEY=<your api key> -a <your app name>
heroku config:remove DYNO_MIN DYNO_MAX WEEKEND_DYNO_MAX APP_NAME HEROKU_API_KEY -a <your app name>
You will need the heroku-api gem. I also set the Gemfile entry to this:
gem 'heroku-api', :require => false
Since the rake task is called twice a day there was no need to load the gem into memory for the rest of the time.
Subscribe to:
Posts (Atom)