Have you ever needed to run a rake task (or any other comand for that matter) on a deployed instance but then realized you didn't have the the required environment variables loaded into your shell?
Here's a short shell script to the rescue:
#!/bin/bash
/opt/elasticbeanstalk/bin/get-config --output YAML environment | sed 's/\: /\=/' | sed 's/^/export /' > /var/app/current/.env
source /var/app/current/.env
"[email protected]"
You can save this file into your Rails app's bin
directory as appenv
and then mark it as executable with chmod +x bin/appenv
.
This script relies on a built-in AWS Elastic Beanstalk command to retrieve the environment variables and we simply do some string manupulation to get it in a way that a shell can interpret it directly.
Running this script creates a .env
file that you can use in other shell scripts or you can simply call this bash script directly with the command and arguments you need like so:
[/var/app/current]$ bin/appenv rake db:version
The command will execute with all environment variables loaded (such as RAILS_ENV=production
and connect to the database properly.