Skip to content

Instantly share code, notes, and snippets.

@juandazapata
Last active January 2, 2016 09:39
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save juandazapata/8284289 to your computer and use it in GitHub Desktop.
Save juandazapata/8284289 to your computer and use it in GitHub Desktop.
# =============================================================
# REQUIREMENTS
# =============================================================
# - Heroku toolbelt installed in your system
# - A heroku remote named `staging`.
# - A heroku remote named `production`.
# =============================================================
namespace :h do
# -------------------------------------------------------------
# DEPLOY
# -------------------------------------------------------------
# It deploys the current branch to heroku and runs the DB
# migrations.
# -------------------------------------------------------------
# rake h:deploy staging
# rake h:deploy production
desc 'Deploy the app'
task :deploy do
environment = ARGV.last
Bundler.with_clean_env { sh "heroku maintenance:on -r #{environment}" }
Bundler.with_clean_env { sh "git push #{environment} HEAD:master -f" }
Bundler.with_clean_env { sh "heroku run rake db:migrate -r #{environment}" }
Bundler.with_clean_env { sh "heroku restart -r #{environment}" }
Bundler.with_clean_env { sh "heroku maintenance:off -r #{environment}" }
task environment.to_sym do ; end
end
# -------------------------------------------------------------
# RESTART
# -------------------------------------------------------------
# rake h:restart staging
# rake h:restart production
desc 'Restart the app'
task :restart do
environment = ARGV.last
Bundler.with_clean_env { sh "heroku restart -r #{environment}" }
task environment.to_sym do ; end
end
# -------------------------------------------------------------
# LOGS
# -------------------------------------------------------------
# Run the logs in `tail` mode.
# -------------------------------------------------------------
# rake h:logs staging
# rake h:logs production
desc 'Tail the logs for the app'
task :logs do
environment = ARGV.last
Bundler.with_clean_env { sh "heroku logs -t -r #{environment}" }
task environment.to_sym do ; end
end
# -------------------------------------------------------------
# CLEAR THE CACHE
# -------------------------------------------------------------
# Runs the heroku console and executes a `Rails.cache.clear`
# command.
# -------------------------------------------------------------
# rake h:cache staging
# rake h:cache production
desc 'Clears the Rails cache for the app'
task :cache do
environment = ARGV.last
Bundler.with_clean_env { sh "heroku run rake h:clear_cache_task -r #{environment}" }
task environment.to_sym do ; end
end
task :clear_cache_task => :environment do
Rails.cache.clear
end
end
@jelder
Copy link

jelder commented Jan 6, 2014

If you have to clear your cache on every deploy, you're doing something wrong.

@juandazapata
Copy link
Author

@jelder yeah you're right, I added it for reference only, but you're totally right. I'm updating it.

@dipth
Copy link

dipth commented Jan 6, 2014

Correct me if I'm wrong, but I believe you need to restart the app after running a database migration.

@juandazapata
Copy link
Author

@dipth you're right. Otherwise you'll see forms that don't save. Thanks for the observation. I'm updating it again :)

@jboyens
Copy link

jboyens commented Jan 8, 2014

Why not just use Heroku San?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment