class RubyRvm
Public Instance Methods
deploy()
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 3 def deploy # TODO: rvm only works if your user uses bash/zsh as login shell, check # dependency needed by rvm return unless @node.install_package 'bash' return unless @node.install_package 'curl' if @node.uses_apt? return unless @node.install_package 'dh-autoreconf' return unless @node.install_package 'build-essential' @node.install_package 'libssl-dev' @node.install_package 'libyaml-dev' @node.install_package 'libxml2-dev' @node.install_package 'libxslt1-dev' @node.install_package 'libreadline6-dev' @node.install_package 'zlib1g-dev' elsif @node.uses_rpm? return unless @node.install_package 'gcc' return unless @node.install_package 'make' @node.install_package 'openssl-devel' @node.install_package 'libyaml-devel' @node.install_package 'libxml2-devel' @node.install_package 'libxslt-devel' @node.install_package 'readline-devel' @node.install_package 'zlib-devel' end @config.each do |user, version| unless @node.user_exists? user, :quiet => true @node.messages.add("user #{user} doesn't exist. skipping").warning next end return unless change_shell user return unless create_homedir user return unless install_rvm user return unless install_ruby user, version return unless set_default user, version end end
status()
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 46 def status @config.each do |user, version| msg = @node.messages.add("getting current ruby-version for user #{user}") ret = @node.exec 'rvm use', :as_user => user msg.parse_result(ret[:exit_code]) msg.print_output(ret) end end
Private Instance Methods
change_shell(user)
click to toggle source
rvm only supports bash and zsh
# File lib/dust/recipes/ruby_rvm.rb, line 90 def change_shell user shell = @node.get_shell user return true if shell == '/bin/zsh' or shell == '/bin/bash' msg = @node.messages.add("changing shell for #{user} to /bin/bash") msg.parse_result(@node.exec("chsh -s /bin/bash #{user}")[:exit_code]) end
create_homedir(user)
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 98 def create_homedir user dir = @node.get_home user unless @node.dir_exists? dir, :quiet => true return false unless @node.mkdir dir return false unless @node.chown user, dir end true end
install_ruby(user, version)
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 70 def install_ruby user, version return true if installed? user, version msg = @node.messages.add("downloading, compiling and installing ruby-#{version}") msg.parse_result( @node.exec("rvm install ruby-#{version}", :as_user => user)[:exit_code]) end
install_rvm(user)
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 58 def install_rvm user # check if rvm is already installed if @node.exec('which rvm', :as_user => user)[:exit_code] == 0 msg = @node.messages.add("updating rvm for user #{user}") return msg.parse_result(@node.exec('rvm get latest', :as_user => user)[:exit_code]) else msg = @node.messages.add("installing rvm for user #{user}") return msg.parse_result(@node.exec("curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer |bash -s stable", :as_user => user)[:exit_code]) end end
installed?(user, version)
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 81 def installed? user, version ret = @node.exec "rvm list |grep ruby-#{version}", :as_user => user if ret[:exit_code] == 0 return @node.messages.add("ruby-#{version} for user #{user} already installed").ok end false end
set_default(user, version)
click to toggle source
# File lib/dust/recipes/ruby_rvm.rb, line 76 def set_default user, version msg = @node.messages.add("setting ruby-#{version} as default") msg.parse_result(@node.exec("rvm use ruby-#{version} --default", :as_user => user)[:exit_code]) end