|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
From e088c6824209d98eccb0f1e6c7e21f26b4a1178d Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
From: Eric Hodel <drbrain@segment7.net>
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
Date: Mon, 6 Jan 2014 14:20:18 -0800
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
Subject: [PATCH] Add BasicSpecification#source_paths
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
This allows documentation and analysis tools to retrieve paths of source
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
files in gems. This is needed as the introduction of shared gem
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
directories means the extension source directory is no longer included
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
in require_paths (which was meant for $LOAD_PATH, not source code).
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
---
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
lib/rubygems/basic_specification.rb | 18 ++++++++++++++++++
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
test/rubygems/test_gem_specification.rb | 16 ++++++++++++++++
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
2 files changed, 34 insertions(+)
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
index a52377f..470a6eb 100644
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
--- a/lib/rubygems/basic_specification.rb
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+++ b/lib/rubygems/basic_specification.rb
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
@@ -207,6 +207,24 @@ def require_paths
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
end
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
##
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ # Returns the paths to the source files for use with analysis and
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ # documentation tools. These paths are relative to full_gem_path.
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ def source_paths
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ paths = raw_require_paths.dup
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ if @extensions then
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ ext_dirs = @extensions.map do |extension|
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ extension.split(File::SEPARATOR, 2).first
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ end.uniq
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ paths.concat ext_dirs
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ end
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ paths.uniq
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ end
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ ##
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
# Return a Gem::Specification from this gem
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
def to_spec
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
index 46db0c4..b72a5d1 100644
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
--- a/test/rubygems/test_gem_specification.rb
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+++ b/test/rubygems/test_gem_specification.rb
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
@@ -1809,6 +1809,22 @@ def test_source
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
assert_kind_of Gem::Source::Installed, @a1.source
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
end
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ def test_source_paths
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ ext_spec
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ @ext.require_paths = %w[lib ext foo]
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ @ext.extensions << 'bar/baz'
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ expected = %w[
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ lib
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ ext
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ foo
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ bar
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ ]
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ assert_equal expected, @ext.source_paths
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+ end
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
+
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
def test_full_require_paths
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
ext_spec
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
--
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
1.8.5.1
|
|
![](https://seccdn.libravatar.org/avatar/67dcb52d090d3f48b3ba686b9a50c61a39be8db5d9b8e4102b2aed8a2dc22109?s=16&d=retro) |
e11dee8 |
|