about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/interpreters/ruby/bundler-env/default-gem-config.nix2
-rw-r--r--pkgs/development/interpreters/ruby/bundler-env/monkey_patches.rb24
2 files changed, 17 insertions, 9 deletions
diff --git a/pkgs/development/interpreters/ruby/bundler-env/default-gem-config.nix b/pkgs/development/interpreters/ruby/bundler-env/default-gem-config.nix
index cadda2887644..b7ddfdea80b3 100644
--- a/pkgs/development/interpreters/ruby/bundler-env/default-gem-config.nix
+++ b/pkgs/development/interpreters/ruby/bundler-env/default-gem-config.nix
@@ -31,7 +31,7 @@ in
 
 {
   charlock_holmes = attrs: {
-    buildInputs = [ which icu ];
+    buildInputs = [ which icu zlib ];
   };
 
   ffi = attrs: {
diff --git a/pkgs/development/interpreters/ruby/bundler-env/monkey_patches.rb b/pkgs/development/interpreters/ruby/bundler-env/monkey_patches.rb
index f3849446fe6a..f68a20212cee 100644
--- a/pkgs/development/interpreters/ruby/bundler-env/monkey_patches.rb
+++ b/pkgs/development/interpreters/ruby/bundler-env/monkey_patches.rb
@@ -74,16 +74,24 @@ Bundler::Fetcher.class_eval do
 
     spec_list = gem_names.map do |name|
       spec = Bundler.nix_gemspecs.detect {|spec| spec.name == name }
-      dependencies = spec.dependencies.
-        select {|dep| dep.type != :development}.
-        map do |dep|
-          deps_list << dep.name
-          dep
-        end
-
-      [spec.name, spec.version, spec.platform, dependencies]
+      if spec.nil?
+        msg = "WARNING: Could not find gemspec for '#{name}'"
+        Bundler.ui.warn msg
+        nil
+      else
+        dependencies = spec.dependencies.
+          select {|dep| dep.type != :development}.
+          map do |dep|
+            deps_list << dep.name
+            dep
+          end
+
+        [spec.name, spec.version, spec.platform, dependencies]
+      end
     end
 
+    spec_list.compact!
+
     [spec_list, deps_list.uniq]
   end
 end