--- - name: Fetch Ruby version required by Mastodon shell: "cat {{ mastodon_home }}/{{ mastodon_path }}/.ruby-version" register: ruby_version - name: Fetch latest tagged release of rbenv shell: "git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/rbenv/rbenv.git | tail --lines=1 | cut -d '/' -f 3" register: rbenv_version - name: Fetch latest tagged release of ruby-build shell: "git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/rbenv/ruby-build.git | tail --lines=1 | cut -d '/' -f 3" register: ruby_build_version - name: "Clone rbenv version {{ rbenv_version.stdout }}" git: repo: "https://github.com/rbenv/rbenv.git" dest: "~/.rbenv" clone: true version: "{{ rbenv_version.stdout }}" - name: "Clone ruby-build version {{ ruby_build_version.stdout }}" git: repo: "https://github.com/rbenv/ruby-build.git" dest: "~/.rbenv/plugins/ruby-build" clone: true version: "{{ ruby_build_version.stdout }}" register: ruby_build - name: Configure rbenv command: ./configure args: chdir: "~/.rbenv/src" register: rbenv_configure - name: Build rbenv command: make args: chdir: "~/.rbenv/src" when: rbenv_configure is succeeded - name: Update profile settings copy: dest: "~/.bashrc" content: | export PATH="~/.rbenv/bin:${PATH}" eval "$(rbenv init -)" - name: Check if the Ruby version is already installed shell: "~/.rbenv/bin/rbenv versions | grep -q {{ ruby_version.stdout }}" register: ruby_installed ignore_errors: true check_mode: no - name: Install Ruby {{ ruby_version.stdout }} shell: "~/.rbenv/bin/rbenv install {{ ruby_version.stdout }}" args: executable: /bin/bash when: ruby_installed is failed - name: Set the default Ruby version to {{ ruby_version.stdout }} shell: "~/.rbenv/bin/rbenv global {{ ruby_version.stdout }}" args: executable: /bin/bash register: default_ruby_version #Locking the Bundler version by itself is no longer required #https://bundler.io/blog/2022/01/23/bundler-v2-3.html - name: Install bundler shell: 'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; gem install bundler' args: executable: /bin/bash when: default_ruby_version is succeeded - name: Set SELinux policy for rbenv bundle same as /bin become: true #Workaround for "SELinux policy is not managed or store cannot be accessed" issue become_user: root shell: "chcon -R --reference /bin {{ mastodon_home }}/.rbenv/shims/bundle" when: - ansible_os_family == "RedHat"