lib/rconf/configurators/ruby_configurator.rb in rconf-0.5.0 vs lib/rconf/configurators/ruby_configurator.rb in rconf-0.5.1

- old
+ new

@@ -52,19 +52,26 @@ run return true when /^Using / report_success check_rvmrc + Command.execute('rvm', ruby_version, 'exec', 'gem', 'install', 'rconf', + :abort_on_failure => "Failed to install rconf gem in #{ruby_version}") post_note 'Configuration required switching the active ruby, please "cd" into the project directory again to activate it' else report_fatal("Failed to use #{ruby_version}:\n#{out}") end end if gemset report_check("Switching to gemset #{gemset}") - res = Command.execute('rvm', 'gemset', 'use', gemset, - :abort_on_failure => "Failed to switch to gemset '#{gemset}'") + res = Command.execute('rvm', 'gemset', 'list') + unless res.output =~ /^#{gemset}$/ + Command.execute('rvm', 'gemset', 'create', gemset, + :abort_on_failure => "Failed to create gemset '#{gemset}'") + end + Command.execute('rvm', 'gemset', 'use', gemset, + :abort_on_failure => "Failed to switch to gemset '#{gemset}'") report_success end Command.set_prefix("rvm #{ruby_version}@#{gemset} exec --") true end @@ -96,17 +103,19 @@ report_failure report_check("Installing rvm #{version}") rvm_src = File.join(ENV['HOME'] || '/root', '.rvm/src') FileUtils.mkdir_p(rvm_src) Dir.chdir(rvm_src) do - res = Command.execute('curl', '-O', '-f', - "http://rvm.beginrescueend.com/releases/rvm-#{version}.tar.gz", - :abort_on_failure => "Failed to download rvm #{version}") - Command.execute('tar', 'zxf', "rvm-#{version}.tar.gz") + Command.execute('curl', '-O', '-f', + "http://rvm.beginrescueend.com/releases/rvm-#{version}.tar.gz", + :abort_on_failure => "Failed to download rvm #{version}") + Command.execute('tar', 'zxf', "rvm-#{version}.tar.gz", + :abort_on_failure => "Failed to extract rvm tgz from #{File.join(Dir.getwd, 'rvm-' + version + '.tar.gz')}") end Dir.chdir(File.join(rvm_src, "rvm-#{version}")) do - res = Command.execute('./install', :abort_on_failure => "Failed to install rvm #{version}") + Command.execute('./install', :abort_on_failure => "Failed to install rvm #{version}") + setup_bashrc end report_success end true end @@ -144,8 +153,40 @@ report_error(e.message) end true end + # Setup .bashrc for rvm support + # + # === Return + # true:: Always return true + def setup_bashrc + candidates = ['.bashrc', '.bash_profile'] + candidates.map! { |c| File.join(ENV['HOME'], c) } + bashrc_path = candidates.detect { |c| File.exist?(c) } + if bashrc_path + content = IO.read(bashrc_path) + unless content.include?(rvm_bash_activation) + content = rvm_bash_activation + "\n" + content + FileUtils.mv(bashrc_path, bashrc_path + '.old') + File.open(bashrc_path, 'w') { |f| f.puts content } + post_note 'rvm was installed, please reload your shell to activate it' + end + else + report_error("Failed to update bashrc to activate rvm, no bashrc found") + end + end + + # rvm bash activation code + # + # === Return + # code(String):: Code that needs to be added to bashrc to activate rvm + def rvm_bash_activation + code = <<EOS +if [[ -n "$PS1" ]]; then + if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm ; fi +fi +EOS + end + end end -