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
-