Commit 25c41a6

mo khan <mo@mokhan.ca>
2015-05-03 20:52:22
start working on the rbenv recipe.
1 parent ce7038a
Changed files (5)
attributes/default.rb
@@ -51,3 +51,4 @@ default[:unicorn][:username] = node['user']['username']
 default[:unicorn][:current_path] = "#{node['capistrano']['root_path']}/current"
 default[:unicorn][:rails_env] = node.chef_environment
 default[:monit][:application] = 'app'
+default['rbenv']['ruby_version'] = '2.2.0'
recipes/rbenv.rb
@@ -0,0 +1,40 @@
+include_recipe "apt"
+configuration = node['rbenv']
+
+items = [ "build-essential", "tklib", "zlib1g-dev", "libssl-dev", "libreadline-gplv2-dev", "libxml2", "libxml2-dev", "libxslt1-dev" ]
+items.each do |item|
+  package item do
+    action :upgrade
+  end
+end
+
+git "/usr/local/rbenv" do
+  repository "git://github.com/sstephenson/rbenv.git"
+  reference "master"
+  action :sync
+end
+
+directory "/usr/local/rbenv/plugins" do
+  action :create
+end
+
+git "/usr/local/rbenv/plugins/ruby-build" do
+  repository "git://github.com/sstephenson/ruby-build.git"
+  reference "master"
+  action :sync
+end
+
+template "/etc/skel/.bashrc" do
+  source "bashrc.erb"
+end
+
+bash "install ruby #{configuration['ruby_version']}" do
+  code <<-SCRIPT
+  export PATH="/usr/local/rbenv/bin:$PATH"
+  eval "$(rbenv init -)"
+  rbenv install #{configuration['ruby_version']}
+  rbenv global #{configuration['ruby_version']}
+  gem install bundler --no-ri --no-rdoc
+  rbenv rehash
+  SCRIPT
+end
spec/rbenv_spec.rb
@@ -0,0 +1,18 @@
+describe "mokhan-myface::rbenv" do
+  subject do
+    ChefSpec::SoloRunner.new do |node|
+    end.converge(described_recipe)
+  end
+
+  it 'installs rbenv' do
+    expect(subject).to sync_git("/usr/local/rbenv")
+  end
+
+  it 'creates the rbenv plugins directory' do
+    expect(subject).to create_directory('/usr/local/rbenv/plugins')
+  end
+
+  it 'installs ruby-build' do
+    expect(subject).to sync_git("/usr/local/rbenv/plugins/ruby-build")
+  end
+end
templates/default/bashrc.erb
@@ -0,0 +1,96 @@
+if [ -d /usr/local/rbenv ]; then
+  export PATH="/usr/local/rbenv/bin:$PATH"
+  eval "$(rbenv init -)"
+fi
+
+# If not running interactively, don't do anything
+[ -z "$PS1" ] && return
+
+HISTCONTROL=ignoreboth
+shopt -s histappend
+HISTSIZE=1000
+HISTFILESIZE=2000
+shopt -s checkwinsize
+
+# make less more friendly for non-text input files, see lesspipe(1)
+[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
+    debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+    xterm-color) color_prompt=yes;;
+esac
+
+# uncomment for a colored prompt, if the terminal has the capability; turned
+# off by default to not distract the user: the focus in a terminal window
+# should be on the output of commands, not on the prompt
+#force_color_prompt=yes
+
+if [ -n "$force_color_prompt" ]; then
+    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+	# We have color support; assume it's compliant with Ecma-48
+	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
+	# a case would tend to support setf rather than setaf.)
+	color_prompt=yes
+    else
+	color_prompt=
+    fi
+fi
+
+if [ "$color_prompt" = yes ]; then
+    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
+else
+    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+fi
+unset color_prompt force_color_prompt
+
+# If this is an xterm set the title to user@host:dir
+case "$TERM" in
+xterm*|rxvt*)
+    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
+    ;;
+*)
+    ;;
+esac
+
+# enable color support of ls and also add handy aliases
+if [ -x /usr/bin/dircolors ]; then
+    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
+    alias ls='ls --color=auto'
+    #alias dir='dir --color=auto'
+    #alias vdir='vdir --color=auto'
+
+    alias grep='grep --color=auto'
+    alias fgrep='fgrep --color=auto'
+    alias egrep='egrep --color=auto'
+fi
+
+# some more ls aliases
+alias ll='ls -alF'
+alias la='ls -A'
+alias l='ls -CF'
+
+# Add an "alert" alias for long running commands.  Use like so:
+#   sleep 10; alert
+alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+    . ~/.bash_aliases
+fi
+
+# enable programmable completion features (you don't need to enable
+# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
+# sources /etc/bash.bashrc).
+if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
+    . /etc/bash_completion
+fi
+set -o vi
.kitchen.yml
@@ -17,4 +17,5 @@ suites:
       - recipe[mokhan-myface::nginx]
       - recipe[mokhan-myface::unicorn]
       - recipe[mokhan-myface::nodejs]
+      - recipe[mokhan-myface::rbenv]
     attributes: