|
1 # Add a vendor_dir for gems at vendor_ruby/gems/<ruby lib version>, to the end |
|
2 # of GEM PATHS, so gem will search the vendor directory for gems. |
|
3 # We can use this directory to install Solaris Ruby modules |
|
4 # that we want to package as gems. |
|
5 # |
|
6 # This is a subset of changes made to Rubygems 2.4.0 |
|
7 # to fix rubygems issue #943 site_ruby/vendor_ruby equivalent for rubygems |
|
8 # https://github.com/rubygems/rubygems/issues/943 |
|
9 # We do not add the --vendor option to the gem command, |
|
10 # nor do we change the default gem installation directory. |
|
11 |
|
12 diff -rupN ruby-1.9.3-p484-orig/lib/rubygems/defaults.rb ruby-1.9.3-p484/lib/rubygems/defaults.rb |
|
13 --- ruby-1.9.3-p484-orig/lib/rubygems/defaults.rb 2012-04-19 15:43:16.000000000 -0700 |
|
14 +++ ruby-1.9.3-p484/lib/rubygems/defaults.rb 2014-08-05 10:40:08.041798000 -0700 |
|
15 @@ -61,11 +61,11 @@ module Gem |
|
16 # Default gem load path |
|
17 |
|
18 def self.default_path |
|
19 - if File.exist? Gem.user_home then |
|
20 - [user_dir, default_dir] |
|
21 - else |
|
22 - [default_dir] |
|
23 - end |
|
24 + path = [] |
|
25 + path << user_dir if user_home && File.exist?(user_home) |
|
26 + path << default_dir |
|
27 + path << vendor_dir if File.directory? vendor_dir |
|
28 + path |
|
29 end |
|
30 |
|
31 ## |
|
32 @@ -121,4 +121,13 @@ module Gem |
|
33 'ruby' |
|
34 end |
|
35 end |
|
36 + |
|
37 + ## |
|
38 + # Directory where vendor gems are installed. |
|
39 + |
|
40 + def self.vendor_dir # :nodoc: |
|
41 + File.join RbConfig::CONFIG['vendordir'], 'gems', |
|
42 + RbConfig::CONFIG['ruby_version'] |
|
43 + end |
|
44 + |
|
45 end |
|
46 diff -rupN ruby-1.9.3-p484-orig/test/rubygems/test_gem.rb ruby-1.9.3-p484/test/rubygems/test_gem.rb |
|
47 --- ruby-1.9.3-p484-orig/test/rubygems/test_gem.rb 2012-04-19 15:43:16.000000000 -0700 |
|
48 +++ ruby-1.9.3-p484/test/rubygems/test_gem.rb 2014-08-05 14:04:49.794776000 -0700 |
|
49 @@ -604,6 +604,45 @@ class TestGem < Gem::TestCase |
|
50 Gem::ConfigMap[:ruby_install_name] = orig_RUBY_INSTALL_NAME |
|
51 end |
|
52 |
|
53 + def test_default_path |
|
54 + orig_vendordir = RbConfig::CONFIG['vendordir'] |
|
55 + RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor' |
|
56 + |
|
57 + FileUtils.rm_rf Gem.user_home |
|
58 + |
|
59 + expected = [Gem.default_dir] |
|
60 + |
|
61 + assert_equal expected, Gem.default_path |
|
62 + ensure |
|
63 + RbConfig::CONFIG['vendordir'] = orig_vendordir |
|
64 + end |
|
65 + |
|
66 + def test_default_path_user_home |
|
67 + orig_vendordir = RbConfig::CONFIG['vendordir'] |
|
68 + RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor' |
|
69 + |
|
70 + expected = [Gem.user_dir, Gem.default_dir] |
|
71 + |
|
72 + assert_equal expected, Gem.default_path |
|
73 + ensure |
|
74 + RbConfig::CONFIG['vendordir'] = orig_vendordir |
|
75 + end |
|
76 + |
|
77 + def test_default_path_vendor_dir |
|
78 + orig_vendordir = RbConfig::CONFIG['vendordir'] |
|
79 + RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor' |
|
80 + |
|
81 + FileUtils.mkdir_p Gem.vendor_dir |
|
82 + |
|
83 + FileUtils.rm_rf Gem.user_home |
|
84 + |
|
85 + expected = [Gem.default_dir, Gem.vendor_dir] |
|
86 + |
|
87 + assert_equal expected, Gem.default_path |
|
88 + ensure |
|
89 + RbConfig::CONFIG['vendordir'] = orig_vendordir |
|
90 + end |
|
91 + |
|
92 def test_self_default_sources |
|
93 assert_equal %w[http://rubygems.org/], Gem.default_sources |
|
94 end |
|
95 @@ -1062,6 +1101,14 @@ class TestGem < Gem::TestCase |
|
96 end |
|
97 end |
|
98 |
|
99 + def test_self_vendor_dir |
|
100 + expected = |
|
101 + File.join RbConfig::CONFIG['vendordir'], 'gems', |
|
102 + RbConfig::CONFIG['ruby_version'] |
|
103 + |
|
104 + assert_equal expected, Gem.vendor_dir |
|
105 + end |
|
106 + |
|
107 def test_load_plugins |
|
108 plugin_path = File.join "lib", "rubygems_plugin.rb" |
|
109 |