From e63d008ae8223a5c17a4f7dc5fd2ed89bcdf9d5e Mon Sep 17 00:00:00 2001
From: Andrew Dunham <andrew@du.nham.ca>
Date: Sat, 16 Mar 2013 06:01:02 -0400
Subject: [PATCH] Fix --include-dependencies parameter on RubyGems >= 2.0.0

---
 library/gem | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
 mode change 100644 => 100755 library/gem

diff --git a/library/gem b/library/gem
old mode 100644
new mode 100755
index 7d566e92925..4270d3dfdc7
--- a/library/gem
+++ b/library/gem
@@ -66,6 +66,16 @@ gem: name=rake gem_source=/path/to/gems/rake-1.0.gem state=present
 
 import re
 
+def get_rubygems_version(module):
+    cmd = [module.get_bin_path('gem', True), '--version']
+    (rc, out, err) = module.run_command(cmd, check_rc=True)
+
+    match = re.match(r'^(\d+)\.(\d+)\.(\d+)', out)
+    if not match:
+        return None
+
+    return tuple(int(x) for x in match.groups())
+
 def get_installed_versions(module, remote=False):
 
     cmd = [ module.get_bin_path('gem', True) ]
@@ -118,14 +128,21 @@ def install(module):
 
     if module.check_mode:
         return
+
+    ver = get_rubygems_version(module)
+    major = ver[0] if ver else None
+
     cmd = [ module.get_bin_path('gem', True) ]
     cmd.append('install')
     if module.params['version']:
         cmd.extend([ '--version', module.params['version'] ])
     if module.params['repository']:
         cmd.extend([ '--source', module.params['repository'] ])
-    if module.params['include_dependencies']:
-        cmd.append('--include-dependencies')
+    if not module.params['include_dependencies']:
+        cmd.append('--ignore-dependencies')
+    else:
+        if major and major < 2:
+            cmd.append('--include-dependencies')
     cmd.append('--no-rdoc')
     cmd.append('--no-ri')
     cmd.append(module.params['gem_source'])