fairplaysk/datacamp

View on GitHub
ansible/roles/ruby/tasks/main.yml

Summary

Maintainability
Test Coverage
---

- name: Install rbenv dependencies
  apt: name={{ item }} state=present
  with_items:
    - git-core
    - build-essential
    - libreadline-dev
    - libssl-dev
    - libyaml-dev
    - libxml2-dev
    - libxslt1-dev
    - zlib1g-dev
    - libffi-dev

- name: Check if rbenv is already installed
  stat: path=/usr/local/rbenv
  register: st

- name: Install rbenv
  git:
    repo: https://github.com/sstephenson/rbenv.git
    dest: /usr/local/rbenv
    depth: 1
  when: not st.stat.exists

- name: Check if rbenv-build is already installed
  stat: path=/usr/local/rbenv/plugins/ruby-build
  register: st

- name: Install ruby-build plugin
  git:
    repo: https://github.com/sstephenson/ruby-build.git
    dest: /usr/local/rbenv/plugins/ruby-build
  when: not st.stat.exists

- name: Grant application user access to rbenv
  file: path=/usr/local/rbenv group=apps mode='g=rwx' recurse=yes

- name: Symlink global rbenv installation to user $HOME
  file: src=/usr/local/rbenv dest=/home/{{ app_user }}/.rbenv state=link

- name: Add rbenv to application user $PATH
  sudo_user: '{{ app_user }}'
  lineinfile:
    dest: ~/.profile
    line: 'export PATH="~/.rbenv/bin:$PATH"'
    state: present

- name: Initialize rbenv on login
  sudo_user: '{{ app_user }}'
  lineinfile:
    dest: ~/.profile
    line: 'eval "$(rbenv init -)"'
    state: present

- name: Detect installed ruby versions
  command: 'sudo -iu {{ app_user }} rbenv versions'
  ignore_errors: yes
  register: rbenv_versions_output

- name: Install ruby version
  command: 'sudo -iu {{ app_user }} rbenv install {{ item }}'
  when: '"{{ item }}" not in rbenv_versions_output.stdout'
  with_items: '{{ rubies }}'

- name: Set initial ruby
  command: 'sudo -iu {{ app_user }} rbenv global {{ rubies.0 }}'

- name: Install bundler
  command: 'sudo -iu {{ app_user }} gem install bundler --no-ri --no-rdoc'