Handle both Array/Enumerable and String values for excludes parameter
authorAaron Stone <aaron@serendipity.cx>
Sun, 14 Sep 2014 06:27:25 +0000 (23:27 -0700)
committerAaron Stone <aaron@serendipity.cx>
Wed, 17 Sep 2014 22:40:05 +0000 (15:40 -0700)
Thanks to @revhazroot for identifying the problem that excludes with a
string or single-element array fails on Ruby >= 1.9.

lib/puppet/provider/vcsrepo/git.rb

index 0a142bb..48bbe7d 100644 (file)
@@ -281,7 +281,16 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
 
   # @!visibility private
   def set_excludes
-    at_path { open('.git/info/exclude', 'w') { |f| @resource.value(:excludes).each { |ex| f.write(ex + "\n") }}}
+    # Excludes may be an Array or a String.
+    at_path do
+      open('.git/info/exclude', 'w') do |f|
+        if @resource.value(:excludes).respond_to?(:each)
+          @resource.value(:excludes).each { |ex| f.puts ex }
+        else
+          f.puts @resource.value(:excludes)
+        end
+      end
+    end
   end
 
   # Finds the latest revision or sha of the current branch if on a branch, or