summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2014-04-02 00:28:30 +0800
committerAndre Arko <andre@arko.net>2014-04-02 00:38:11 +0800
commitcfa0e047083d98d6ad19c21093fe20a983d03833 (patch)
tree51d6a4219fb82b1e05cd7453b52ded423ab7f00e
parent2d63573e6a0a75dc98a90484c81b2e76bb1e8f97 (diff)
downloadbundler-cfa0e047083d98d6ad19c21093fe20a983d03833.tar.gz
Handle gems without extensions, too ¬_¬
-rw-r--r--lib/bundler/source/rubygems.rb8
-rw-r--r--spec/install/gems/sudo_spec.rb6
2 files changed, 8 insertions, 6 deletions
diff --git a/lib/bundler/source/rubygems.rb b/lib/bundler/source/rubygems.rb
index afeee2b077..3d84df45cd 100644
--- a/lib/bundler/source/rubygems.rb
+++ b/lib/bundler/source/rubygems.rb
@@ -102,11 +102,11 @@ module Bundler
Bundler.rubygems.repository_subdirectories.each do |name|
src = File.join(install_path, name, "*")
dst = File.join(Bundler.rubygems.gem_dir, name)
- if name == "extensions"
+ if name == "extensions" && Dir.glob(src).any?
src = File.join(src, "*/*")
- ext_src = Dir.glob(src).first.gsub(src[0..-6], '')
- ext_dst = File.join(dst, ext_src)
- dst = File.dirname(ext_dst)
+ ext_src = Dir.glob(src).first
+ ext_src.gsub!(src[0..-6], '')
+ dst = File.dirname(File.join(dst, ext_src))
end
Bundler.mkdir_p dst
Bundler.sudo "cp -R #{src} #{dst}" if Dir[src].any?
diff --git a/spec/install/gems/sudo_spec.rb b/spec/install/gems/sudo_spec.rb
index 2fccfc0871..60a48ab1e8 100644
--- a/spec/install/gems/sudo_spec.rb
+++ b/spec/install/gems/sudo_spec.rb
@@ -89,8 +89,10 @@ describe "when using sudo", :sudo => true do
gem "very_simple_binary"
G
- binary = Dir.glob(system_gem_path("extensions/*/*/very_simple_binary-1.0/very_simple_binary_c.bundle")).first
- expect(File.exist?(binary)).to be
+ binary_glob = system_gem_path("extensions/*/*/very_simple_binary-1.0/very_simple_binary_c.bundle")
+ binary = Dir.glob(binary_glob).first
+ expect(binary).to be
+ expect(Pathname.new(binary)).to exist
end
end