I was looking for a way to easily print the current gemset I am in when working in the terminal. I found a stack overflow post, but it did not really satisfy me. With some googling I also found this post.
I modified the script a tiny bit (color preferences + added __git_ps1 to detect branch) and would like to share you what I’ve got.
This is the complete script I use now, copy & paste if you like.
The result looks like this:

# This shows the git branch of the current directory
function __git_ps1 () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (1)/'
}
function __git_dirty {
git diff --quiet HEAD &>/dev/null
[ $? == 1 ] && echo " (changes!)"
}
function __git_branch {
__git_ps1 " %s"
}
function __my_rvm_ruby_version {
local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}')
[ "$gemset" != "" ] && gemset="@$gemset"
local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}')
[ "$version" == "1.8.7" ] && version=""
local full="$version$gemset"
[ "$full" != "" ] && echo "$full "
}
bash_prompt() {
local NONE="[\033[0m]" # unsets color to term's fg color
# regular colors
local K="[\033[0;30m]" # black
local R="[\033[0;31m]" # red
local G="[\033[0;32m]" # green
local Y="[\033[0;33m]" # yellow
local B="[\033[0;34m]" # blue
local M="[\033[0;35m]" # magenta
local C="[\033[0;36m]" # cyan
local W="[\033[0;37m]" # white
# emphasized (bolded) colors
local EMK="[\033[1;30m]"
local EMR="[\033[1;31m]"
local EMG="[\033[1;32m]"
local EMY="[\033[1;33m]"
local EMB="[\033[1;34m]"
local EMM="[\033[1;35m]"
local EMC="[\033[1;36m]"
local EMW="[\033[1;37m]"
# background colors
local BGK="[\033[40m]"
local BGR="[\033[41m]"
local BGG="[\033[42m]"
local BGY="[\033[43m]"
local BGB="[\033[44m]"
local BGM="[\033[45m]"
local BGC="[\033[46m]"
local BGW="[\033[47m]"
local UC=$W # user's color
[ $UID -eq "0" ] && UC=$R # root's color
PS1="$M$(__my_rvm_ruby_version)$Wh$W:$EMGw$EMC$(__git_branch)$EMW$(__git_dirty)${NONE} $ "
}
bash_prompt
unset bash_prompt