replace $use_rvm with $install_method to enable more flexible installation
authorMicah Anderson <micah@riseup.net>
Tue, 20 Nov 2012 22:36:12 +0000 (17:36 -0500)
committerMicah Anderson <micah@riseup.net>
Tue, 20 Nov 2012 22:36:12 +0000 (17:36 -0500)
possibilities

The $use_rvm variable was limited to either using rvm or not, so we replace that
with $install_method, defaulting to the previous usage

If you set $use_rvm it to not use rvm, then the module would just use the
gem. This made it so you couldn't install bundler via a package. So the
$install_method was added which enabled you to alter how the non-rvm
installation was provided.

Unfortunately, it was a mistake to have both $use_rvm and $install_method
because $use_rvm is 'true' by default, so if you tried to set an install_method,
then it wouldn't work because it would just use the rvm method. So in order to
install via something other than rvm or gem, you would need to do both use_rvm
=> false; install_method => <whatever>.

Just having the install_method parameter is much cleaner, because it is generic,
doesn't require multiple settings when not installing via rvm or gem, and it
defaults to what the module was doing before (using rvm by default).

README.md
manifests/install.pp
manifests/params.pp

index fbeb83f..a792b86 100644 (file)
--- a/README.md
+++ b/README.md
@@ -9,14 +9,22 @@ This module supports Ubuntu 10.04 and Debian
 Installation
 ------------
 
-1. Copy this directory to your puppet master module path $(git clone https://github.com/evanstachowiak/puppet-bundler bundler)
-2. Apply the `bundler` class to any nodes you want bundler installed on: 
+1. Copy this directory to your puppet master module path $(git clone
+https://github.com/evanstachowiak/puppet-bundler bundler)
+
+2. Apply the `bundler` class to any nodes you want bundler installed on:
+
   class { 'bundler::install': }
-   By default this will install bundler as a gem, if you wish to use another method, you can pass any puppet package provider
-   to the class as 'install_method', or use 'undef' if you wish the puppet parser to automatically chose the best method for 
-   your platform. 
-  Examples: class { 'bundler::install': install_method => fink}; 
-            class { 'bundler::install': install_method => undef}
+
+   By default this will install bundler with RVM, if you wish to use another
+   method, you can pass any puppet package provider to the class as
+   'install_method', or just use '' if you wish the puppet parser to
+   automatically chose the best method for your platform.
+
+  Examples: class { 'bundler::install': install_method => 'fink' }; 
+            class { 'bundler::install': install_method => 'gem' }; 
+            class { 'bundler::install': install_method => '' }
+
 3. Set whatever config variables are necessary: 
    bundler::config { 'linecache19':
     user        => ubuntu,
index e464390..73ceb59 100644 (file)
 #   include rvm
 #
 class bundler::install (
-  $ruby_version,
+  $ruby_version    = undef,
   $ensure          = 'present',
-  $use_rvm         = $bundler::params::use_rvm,
   $install_method  = $bundler::params::install_method,
   ) inherits bundler::params {
 
-  if $use_rvm == true {
-    #Install bundler with correct RVM
-    rvm_gem { 'bundler':
+  if $install_method == 'rvm' {
+    if $ruby_version == undef {
+      fail('When using rvm, you must pass a ruby_version')
+    }
+    else {
+      #Install bundler with correct RVM
+      rvm_gem { 'bundler':
         ensure       => $ensure,
         ruby_version => $ruby_version,
+      }
     }
   }
   else {
index b80dbab..53ca86e 100644 (file)
@@ -17,8 +17,7 @@ class bundler::params {
     ubuntu, debian: {
       $user               = 'root'
       $home_dir_base_path = '/home'
-      $use_rvm            = true
-      $install_method     = gem
+      $install_method     = 'rvm'
       $rvm_bin            = '/usr/local/rvm/bin/rvm'
       $rvm_gem_path       = '/usr/local/rvm/gems'
       $rvm_gemset         = 'global'