summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/runtime.rb19
-rw-r--r--spec/runtime/require_spec.rb18
2 files changed, 34 insertions, 3 deletions
diff --git a/lib/bundler/runtime.rb b/lib/bundler/runtime.rb
index 0422d3cfac..6a80a70314 100644
--- a/lib/bundler/runtime.rb
+++ b/lib/bundler/runtime.rb
@@ -63,13 +63,26 @@ module Bundler
# Loop through all the specified autorequires for the
# dependency. If there are none, use the dependency's name
# as the autorequire.
- Array(dep.autorequire || dep.name).each do |file|
- required_file = file
- Kernel.require file
+ if dep.autorequire
+ dep.autorequire.each do |file|
+ required_file = file
+ Kernel.require file
+ end
+ else
+ required_file = dep.name
+ Kernel.require required_file
end
rescue LoadError => e
REGEXPS.find { |r| r =~ e.message }
raise if dep.autorequire || $1 != required_file
+
+ begin
+ namespaced_file = dep.name.gsub('-', '/')
+ Kernel.require namespaced_file
+ rescue LoadError
+ REGEXPS.find { |r| r =~ e.message }
+ raise if dep.autorequire || $1 != namespaced_file
+ end if dep.name.include?('-')
end
end
end
diff --git a/spec/runtime/require_spec.rb b/spec/runtime/require_spec.rb
index 2f3a515d42..795fd6cbfe 100644
--- a/spec/runtime/require_spec.rb
+++ b/spec/runtime/require_spec.rb
@@ -76,6 +76,24 @@ describe "Bundler.require" do
out.should == "two\nfive"
end
+end
+
+describe "Bundler.require" do
+
+ it "requires gems that use dashes to indicate namespaces" do
+ build_lib "name-spaces", "1.0.0", :no_default => true do |s|
+ s.write "lib/name/spaces.rb", "puts 'worked'"
+ end
+
+ gemfile <<-G
+ gem "name-spaces", :path => "#{lib_path}"
+ G
+
+ run "Bundler.require"
+ out.should == 'worked'
+ end
+
+
it "raises an exception if a require is specified but the file does not exist" do
gemfile <<-G
path "#{lib_path}"