REQUIRED_RUBY_VERSION= provision-ruby() { USE_BUNDLER_1=0 if [[ -f .tool-versions ]]; then REQUIRED_RUBY_VERSION=$(cat .tool-versions | grep '^ruby ' | head -n 1 | sed -Ee 's/^ruby (.+)$/\1/') elif [[ -f .ruby-version ]]; then REQUIRED_RUBY_VERSION=$(cat .ruby-version | head -n 1 | sed -Ee 's/^ruby-([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)$/\1/') fi if [[ -z $REQUIRED_RUBY_VERSION ]]; then error "Could not determine required Ruby version for this project." print-wrapped "\ Your project needs to include either a valid .tool-versions file with a 'ruby' line or a valid .ruby-version file." exit 1 fi ensure-ruby-development-libraries-installed ensure-ruby-installed if [[ -f Gemfile ]]; then ensure-project-ruby-dependencies-installed fi } ensure-ruby-development-libraries-installed() { local platform=$(determine-platform) if [[ $platform == "linux" ]]; then banner "Installing Ruby development libraries" install apt=ruby-dev rpm=ruby-devel fi } ensure-ruby-installed() { if has-executable asdf; then if ! (asdf current ruby | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then banner "Installing Ruby $REQUIRED_RUBY_VERSION with asdf" asdf install ruby $REQUIRED_RUBY_VERSION fi elif has-executable rbenv; then if ! (rbenv versions | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then banner "Installing Ruby $REQUIRED_RUBY_VERSION with rbenv" rbenv install --skip-existing "$REQUIRED_RUBY_VERSION" fi elif has-executable chruby-exec; then PREFIX='' source /usr/local/share/chruby/chruby.sh if ! (chruby '' | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then if has-executable install-ruby; then banner "Installing Ruby $REQUIRED_RUBY_VERSION with install-ruby" install-ruby "$REQUIRED_RUBY_VERSION" else error "Please use chruby to install Ruby $REQUIRED_RUBY_VERSION!" fi fi elif has-executable rvm; then if ! (rvm list | grep $REQUIRED_RUBY_VERSION'\>' &>/dev/null); then banner "Installing Ruby $REQUIRED_RUBY_VERSION with rvm" rvm install $REQUIRED_RUBY_VERSION fi else error "You don't seem to have a Ruby manager installed." print-wrapped "\ We recommend using asdf. You can find instructions to install it here: https://asdf-vm.com When you're done, close and re-open this terminal tab and re-run this script." exit 1 fi } has-bundler() { has-executable bundle && bundle -v &>/dev/null } ensure-project-ruby-dependencies-installed() { banner 'Installing Ruby dependencies' if [[ $USE_BUNDLER_1 -eq 1 ]] && (! has-bundler || ! [[ $(bundle -v) =~ '^Bundler version 1\.' ]]); then gem install bundler:'~> 1.0' elif ! has-bundler; then gem install bundler fi bundle check || bundle install }