Skip to content

Instantly share code, notes, and snippets.

@keltia
Created April 10, 2017 11:41
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save keltia/42898bbcda77d40b4bb7169ae844a433 to your computer and use it in GitHub Desktop.
Save keltia/42898bbcda77d40b4bb7169ae844a433 to your computer and use it in GitHub Desktop.
Migrate all gems from one Ruby version to another, useful when using `rbenv`
#!/bin/zsh -i
# if you're using ZSH, change the shebang above to "#!/bin/zsh -i"
eval "$(rbenv init -)"
if [ ${#} -ne 2 ]; then
echo >&2 Usage: $(basename ${0}) old-version new-version
exit 1
fi
home_path=$(cd ~; pwd -P)
old_version=${1}
new_version=${2}
rbenv shell ${old_version}
declare -a old_gem_paths old_gems
old_gem_paths=($(gem env gempath | sed -e 's/:/ /'))
rbenv shell ${new_version}
for ogp in "${old_gem_paths[@]}"; do
case "${ogp}" in
${home_path}/.gem/ruby*|*/.gem/ruby*)
# Skip ~/.gem/ruby.
continue
;;
esac
for old_gem in $(ls -L ${ogp}/cache/*.gem); do
gem install --local --ignore-dependencies ${old_gem}
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment