May 22, 2014

Run Grails Commands on Heroku

I recently needed to run Grails database migrations on Heroku and used the following steps to run these.

First,  the Grails wrapper is required which can be installed using the wrapper command.

After running the wrapper command for the first time on Heroku, it complained that JAVA_HOME needs to be set. So, I used the following command to determine JAVA_HOME:

$ heroku run which java
Running `which java` attached to terminal... up, run.6852
/app/.jdk/bin/java

I used just the home part of the path to set the JAVA_HOME variable:

$ heroku config:set JAVA_HOME='/app/.jdk'
Setting config vars and restarting ... done, v22
JAVA_HOME: /app/.jdk

Next, I ran the migration command with the environment I required:

$ heroku run ./grailsw -Dgrails.env=production dbm-update
| Finished dbm-update

Finally, I confirmed the tables were created that I needed:

$ heroku pg:info
=== HEROKU_POSTGRESQL_PURPLE_URL (DATABASE_URL)
Plan: Dev
Status: Available
Connections: 0
PG Version: 9.3.3
Created: 2014-05-11 03:38 UTC
Data Size: 6.6 MB
Tables: 3
Rows: 3/10000 (In compliance)

Using the above  steps, the Grails wrapper command could also be used to run other Grails commands on Heroku.

About the Author

Object Partners profile.
Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blog Posts
An Exploration in Rust: Musings From a Java/C++ Developer
Why Rust? It’s fast (runtime performance) It’s small (binary size) It’s safe (no memory leaks) It’s modern (build system, language features, etc) When Is It Worth It? Embedded systems (where it is implied that interpreted […]
Getting Started with CSS Container Queries
For as long as I’ve been working full-time on the front-end, I’ve heard about the promise of container queries and their potential to solve the majority of our responsive web design needs. And, for as […]
Simple improvements to making decisions in teams
Software development teams need to make a lot of decisions. Functional requirements, non-functional requirements, user experience, API contracts, tech stack, architecture, database schemas, cloud providers, deployment strategy, test strategy, security, and the list goes on. […]
JavaScript Bundle Optimization – Polyfills
If you are lucky enough to only support a small subset of browsers (for example, you are targeting a controlled set of users), feel free to move along. However, if your website is open to […]