fix $install_method to work properly
authorMicah Anderson <micah@riseup.net>
Wed, 21 Nov 2012 00:08:45 +0000 (19:08 -0500)
committerMicah Anderson <micah@riseup.net>
Wed, 21 Nov 2012 00:08:45 +0000 (19:08 -0500)
unfortunately, if one attempts to set the $install_method to an empty string,
puppet complains that you are interning an empty string. If you set it to undef,
then the parameterized default will get chosen.

To fix this, I replaced the $bundler::params::install_method default class
parameter value with 'rvm' (the value that $bundler::params::install_method
defaulted to) and then setup a test to determine if the $install_method was set
to undef, if so, then we set a second variable ($provider_method) to undef and
use that.

README.md
manifests/install.pp

index a792b86..f0b8c53 100644 (file)
--- a/README.md
+++ b/README.md
@@ -18,12 +18,12 @@ https://github.com/evanstachowiak/puppet-bundler bundler)
 
    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
+   'install_method', or just 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 => 'gem' }; 
-            class { 'bundler::install': install_method => '' }
+            class { 'bundler::install': install_method => undef }
 
 3. Set whatever config variables are necessary: 
    bundler::config { 'linecache19':
index 73ceb59..4111d52 100644 (file)
 class bundler::install (
   $ruby_version    = undef,
   $ensure          = 'present',
-  $install_method  = $bundler::params::install_method,
+  $install_method  = 'rvm',
   ) inherits bundler::params {
 
-  if $install_method == 'rvm' {
+  if $install_method == undef {
+    $provider_method = undef
+  }
+  else {
+    $provider_method = $bundler::params::install_method
+  }
+
+  if $provider_method == 'rvm' {
     if $ruby_version == undef {
       fail('When using rvm, you must pass a ruby_version')
     }
@@ -38,7 +45,7 @@ class bundler::install (
   else {
     package { 'bundler':
       ensure   => $ensure,
-      provider => $install_method,
+      provider => $provider_method,
     }
   }