rubygems-update 2.4.8 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CODE_OF_CONDUCT.md +40 -0
- data/CVE-2015-3900.txt +40 -0
- data/History.txt +173 -2
- data/Manifest.txt +14 -1
- data/Rakefile +36 -1
- data/lib/rubygems.rb +32 -14
- data/lib/rubygems/basic_specification.rb +31 -9
- data/lib/rubygems/commands/dependency_command.rb +25 -15
- data/lib/rubygems/commands/environment_command.rb +2 -0
- data/lib/rubygems/commands/help_command.rb +0 -10
- data/lib/rubygems/commands/install_command.rb +1 -1
- data/lib/rubygems/commands/list_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +11 -1
- data/lib/rubygems/commands/query_command.rb +1 -1
- data/lib/rubygems/commands/sources_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +2 -2
- data/lib/rubygems/config_file.rb +4 -4
- data/lib/rubygems/core_ext/kernel_require.rb +2 -2
- data/lib/rubygems/dependency.rb +9 -6
- data/lib/rubygems/dependency_list.rb +3 -0
- data/lib/rubygems/ext/builder.rb +2 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +6 -1
- data/lib/rubygems/indexer.rb +26 -91
- data/lib/rubygems/installer.rb +58 -26
- data/lib/rubygems/installer_test_case.rb +2 -2
- data/lib/rubygems/package.rb +18 -6
- data/lib/rubygems/package/old.rb +2 -2
- data/lib/rubygems/package/tar_reader/entry.rb +7 -1
- data/lib/rubygems/package/tar_test_case.rb +12 -3
- data/lib/rubygems/package/tar_writer.rb +19 -1
- data/lib/rubygems/platform.rb +3 -2
- data/lib/rubygems/rdoc.rb +1 -2
- data/lib/rubygems/remote_fetcher.rb +25 -6
- data/lib/rubygems/request/connection_pools.rb +8 -4
- data/lib/rubygems/request_set.rb +3 -4
- data/lib/rubygems/request_set/gem_dependency_api.rb +2 -2
- data/lib/rubygems/request_set/lockfile.rb +1 -1
- data/lib/rubygems/request_set/lockfile/parser.rb +54 -43
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +16 -13
- data/lib/rubygems/resolver.rb +47 -242
- data/lib/rubygems/resolver/activation_request.rb +2 -1
- data/lib/rubygems/resolver/conflict.rb +0 -1
- data/lib/rubygems/resolver/dependency_request.rb +4 -1
- data/lib/rubygems/resolver/git_specification.rb +1 -2
- data/lib/rubygems/resolver/molinillo.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +5 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +266 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +69 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +3 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +99 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +63 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +430 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +43 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +51 -0
- data/lib/rubygems/resolver/specification.rb +1 -1
- data/lib/rubygems/specification.rb +256 -86
- data/lib/rubygems/stub_specification.rb +37 -29
- data/lib/rubygems/test_case.rb +65 -28
- data/lib/rubygems/test_utilities.rb +18 -18
- data/lib/rubygems/text.rb +0 -2
- data/lib/rubygems/uninstaller.rb +1 -1
- data/lib/rubygems/util.rb +4 -4
- data/lib/rubygems/util/licenses.rb +309 -0
- data/lib/rubygems/util/list.rb +9 -21
- data/lib/rubygems/version.rb +24 -14
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/test_config.rb +10 -1
- data/test/rubygems/test_gem.rb +58 -11
- data/test/rubygems/test_gem_available_set.rb +2 -1
- data/test/rubygems/test_gem_commands_cleanup_command.rb +6 -5
- data/test/rubygems/test_gem_commands_dependency_command.rb +9 -1
- data/test/rubygems/test_gem_commands_install_command.rb +17 -28
- data/test/rubygems/test_gem_commands_mirror.rb +0 -13
- data/test/rubygems/test_gem_commands_outdated_command.rb +2 -3
- data/test/rubygems/test_gem_commands_pristine_command.rb +33 -5
- data/test/rubygems/test_gem_commands_query_command.rb +123 -158
- data/test/rubygems/test_gem_commands_server_command.rb +2 -2
- data/test/rubygems/test_gem_commands_specification_command.rb +4 -4
- data/test/rubygems/test_gem_commands_stale_command.rb +2 -0
- data/test/rubygems/test_gem_commands_uninstall_command.rb +5 -4
- data/test/rubygems/test_gem_commands_unpack_command.rb +4 -6
- data/test/rubygems/test_gem_commands_update_command.rb +22 -52
- data/test/rubygems/test_gem_commands_which_command.rb +1 -0
- data/test/rubygems/test_gem_config_file.rb +1 -1
- data/test/rubygems/test_gem_dependency.rb +7 -3
- data/test/rubygems/test_gem_dependency_installer.rb +5 -5
- data/test/rubygems/test_gem_doctor.rb +1 -1
- data/test/rubygems/test_gem_ext_builder.rb +2 -0
- data/test/rubygems/test_gem_ext_configure_builder.rb +8 -4
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +25 -21
- data/test/rubygems/test_gem_indexer.rb +4 -4
- data/test/rubygems/test_gem_install_update_options.rb +2 -2
- data/test/rubygems/test_gem_installer.rb +32 -26
- data/test/rubygems/test_gem_package.rb +46 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +8 -1
- data/test/rubygems/test_gem_package_tar_writer.rb +10 -1
- data/test/rubygems/test_gem_package_task.rb +5 -2
- data/test/rubygems/test_gem_platform.rb +11 -0
- data/test/rubygems/test_gem_remote_fetcher.rb +64 -3
- data/test/rubygems/test_gem_request.rb +1 -1
- data/test/rubygems/test_gem_request_connection_pools.rb +10 -1
- data/test/rubygems/test_gem_request_set.rb +5 -8
- data/test/rubygems/test_gem_request_set_lockfile.rb +2 -4
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
- data/test/rubygems/test_gem_resolver.rb +12 -31
- data/test/rubygems/test_gem_resolver_git_specification.rb +1 -0
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -11
- data/test/rubygems/test_gem_resolver_lock_specification.rb +3 -2
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -0
- data/test/rubygems/test_gem_server.rb +4 -0
- data/test/rubygems/test_gem_specification.rb +344 -61
- data/test/rubygems/test_gem_stream_ui.rb +6 -6
- data/test/rubygems/test_gem_stub_specification.rb +21 -6
- data/test/rubygems/test_gem_text.rb +2 -0
- data/test/rubygems/test_gem_uninstaller.rb +2 -1
- data/test/rubygems/test_gem_util.rb +8 -0
- data/test/rubygems/test_require.rb +156 -125
- data/util/generate_spdx_license_list.rb +21 -0
- data/util/update_bundled_ca_certificates.rb +2 -1
- metadata +42 -6
- metadata.gz.sig +0 -0
- data/lib/rubygems/util/stringio.rb +0 -34
data/lib/rubygems/uninstaller.rb
CHANGED
data/lib/rubygems/util.rb
CHANGED
@@ -10,8 +10,8 @@ module Gem::Util
|
|
10
10
|
|
11
11
|
def self.gunzip(data)
|
12
12
|
require 'zlib'
|
13
|
-
require '
|
14
|
-
data =
|
13
|
+
require 'stringio'
|
14
|
+
data = StringIO.new(data, 'r')
|
15
15
|
|
16
16
|
unzipped = Zlib::GzipReader.new(data).read
|
17
17
|
unzipped.force_encoding Encoding::BINARY if Object.const_defined? :Encoding
|
@@ -23,8 +23,8 @@ module Gem::Util
|
|
23
23
|
|
24
24
|
def self.gzip(data)
|
25
25
|
require 'zlib'
|
26
|
-
require '
|
27
|
-
zipped =
|
26
|
+
require 'stringio'
|
27
|
+
zipped = StringIO.new('','w')
|
28
28
|
zipped.set_encoding Encoding::BINARY if Object.const_defined? :Encoding
|
29
29
|
|
30
30
|
Zlib::GzipWriter.wrap zipped do |io| io.write data end
|
@@ -0,0 +1,309 @@
|
|
1
|
+
class Gem::Licenses
|
2
|
+
NONSTANDARD = 'Nonstandard'.freeze
|
3
|
+
|
4
|
+
# Software Package Data Exchange (SPDX) standard open-source software
|
5
|
+
# license identifiers
|
6
|
+
IDENTIFIERS = %w(
|
7
|
+
AAL
|
8
|
+
ADSL
|
9
|
+
AFL-1.1
|
10
|
+
AFL-1.2
|
11
|
+
AFL-2.0
|
12
|
+
AFL-2.1
|
13
|
+
AFL-3.0
|
14
|
+
AGPL-1.0
|
15
|
+
AGPL-3.0
|
16
|
+
AMDPLPA
|
17
|
+
AML
|
18
|
+
AMPAS
|
19
|
+
ANTLR-PD
|
20
|
+
APAFML
|
21
|
+
APL-1.0
|
22
|
+
APSL-1.0
|
23
|
+
APSL-1.1
|
24
|
+
APSL-1.2
|
25
|
+
APSL-2.0
|
26
|
+
Abstyles
|
27
|
+
Adobe-2006
|
28
|
+
Adobe-Glyph
|
29
|
+
Afmparse
|
30
|
+
Aladdin
|
31
|
+
Apache-1.0
|
32
|
+
Apache-1.1
|
33
|
+
Apache-2.0
|
34
|
+
Artistic-1.0
|
35
|
+
Artistic-1.0-Perl
|
36
|
+
Artistic-1.0-cl8
|
37
|
+
Artistic-2.0
|
38
|
+
BSD-2-Clause
|
39
|
+
BSD-2-Clause-FreeBSD
|
40
|
+
BSD-2-Clause-NetBSD
|
41
|
+
BSD-3-Clause
|
42
|
+
BSD-3-Clause-Attribution
|
43
|
+
BSD-3-Clause-Clear
|
44
|
+
BSD-3-Clause-LBNL
|
45
|
+
BSD-4-Clause
|
46
|
+
BSD-4-Clause-UC
|
47
|
+
BSD-Protection
|
48
|
+
BSL-1.0
|
49
|
+
Bahyph
|
50
|
+
Barr
|
51
|
+
Beerware
|
52
|
+
BitTorrent-1.0
|
53
|
+
BitTorrent-1.1
|
54
|
+
Borceux
|
55
|
+
CATOSL-1.1
|
56
|
+
CC-BY-1.0
|
57
|
+
CC-BY-2.0
|
58
|
+
CC-BY-2.5
|
59
|
+
CC-BY-3.0
|
60
|
+
CC-BY-4.0
|
61
|
+
CC-BY-NC-1.0
|
62
|
+
CC-BY-NC-2.0
|
63
|
+
CC-BY-NC-2.5
|
64
|
+
CC-BY-NC-3.0
|
65
|
+
CC-BY-NC-4.0
|
66
|
+
CC-BY-NC-ND-1.0
|
67
|
+
CC-BY-NC-ND-2.0
|
68
|
+
CC-BY-NC-ND-2.5
|
69
|
+
CC-BY-NC-ND-3.0
|
70
|
+
CC-BY-NC-ND-4.0
|
71
|
+
CC-BY-NC-SA-1.0
|
72
|
+
CC-BY-NC-SA-2.0
|
73
|
+
CC-BY-NC-SA-2.5
|
74
|
+
CC-BY-NC-SA-3.0
|
75
|
+
CC-BY-NC-SA-4.0
|
76
|
+
CC-BY-ND-1.0
|
77
|
+
CC-BY-ND-2.0
|
78
|
+
CC-BY-ND-2.5
|
79
|
+
CC-BY-ND-3.0
|
80
|
+
CC-BY-ND-4.0
|
81
|
+
CC-BY-SA-1.0
|
82
|
+
CC-BY-SA-2.0
|
83
|
+
CC-BY-SA-2.5
|
84
|
+
CC-BY-SA-3.0
|
85
|
+
CC-BY-SA-4.0
|
86
|
+
CC0-1.0
|
87
|
+
CDDL-1.0
|
88
|
+
CDDL-1.1
|
89
|
+
CECILL-1.0
|
90
|
+
CECILL-1.1
|
91
|
+
CECILL-2.0
|
92
|
+
CECILL-B
|
93
|
+
CECILL-C
|
94
|
+
CNRI-Jython
|
95
|
+
CNRI-Python
|
96
|
+
CNRI-Python-GPL-Compatible
|
97
|
+
CPAL-1.0
|
98
|
+
CPL-1.0
|
99
|
+
CPOL-1.02
|
100
|
+
CUA-OPL-1.0
|
101
|
+
Caldera
|
102
|
+
ClArtistic
|
103
|
+
Condor-1.1
|
104
|
+
Crossword
|
105
|
+
Cube
|
106
|
+
D-FSL-1.0
|
107
|
+
DOC
|
108
|
+
DSDP
|
109
|
+
Dotseqn
|
110
|
+
ECL-1.0
|
111
|
+
ECL-2.0
|
112
|
+
EFL-1.0
|
113
|
+
EFL-2.0
|
114
|
+
EPL-1.0
|
115
|
+
EUDatagrid
|
116
|
+
EUPL-1.0
|
117
|
+
EUPL-1.1
|
118
|
+
Entessa
|
119
|
+
ErlPL-1.1
|
120
|
+
Eurosym
|
121
|
+
FSFUL
|
122
|
+
FSFULLR
|
123
|
+
FTL
|
124
|
+
Fair
|
125
|
+
Frameworx-1.0
|
126
|
+
FreeImage
|
127
|
+
GFDL-1.1
|
128
|
+
GFDL-1.2
|
129
|
+
GFDL-1.3
|
130
|
+
GL2PS
|
131
|
+
GPL-1.0
|
132
|
+
GPL-2.0
|
133
|
+
GPL-3.0
|
134
|
+
Giftware
|
135
|
+
Glide
|
136
|
+
Glulxe
|
137
|
+
HPND
|
138
|
+
HaskellReport
|
139
|
+
IBM-pibs
|
140
|
+
ICU
|
141
|
+
IJG
|
142
|
+
IPA
|
143
|
+
IPL-1.0
|
144
|
+
ISC
|
145
|
+
ImageMagick
|
146
|
+
Imlib2
|
147
|
+
Intel
|
148
|
+
Intel-ACPI
|
149
|
+
JSON
|
150
|
+
JasPer-2.0
|
151
|
+
LGPL-2.0
|
152
|
+
LGPL-2.1
|
153
|
+
LGPL-3.0
|
154
|
+
LGPLLR
|
155
|
+
LPL-1.0
|
156
|
+
LPL-1.02
|
157
|
+
LPPL-1.0
|
158
|
+
LPPL-1.1
|
159
|
+
LPPL-1.2
|
160
|
+
LPPL-1.3a
|
161
|
+
LPPL-1.3c
|
162
|
+
Latex2e
|
163
|
+
Leptonica
|
164
|
+
Libpng
|
165
|
+
MIT
|
166
|
+
MIT-CMU
|
167
|
+
MIT-advertising
|
168
|
+
MIT-enna
|
169
|
+
MIT-feh
|
170
|
+
MITNFA
|
171
|
+
MPL-1.0
|
172
|
+
MPL-1.1
|
173
|
+
MPL-2.0
|
174
|
+
MPL-2.0-no-copyleft-exception
|
175
|
+
MS-PL
|
176
|
+
MS-RL
|
177
|
+
MTLL
|
178
|
+
MakeIndex
|
179
|
+
MirOS
|
180
|
+
Motosoto
|
181
|
+
Multics
|
182
|
+
Mup
|
183
|
+
NASA-1.3
|
184
|
+
NBPL-1.0
|
185
|
+
NCSA
|
186
|
+
NGPL
|
187
|
+
NLPL
|
188
|
+
NOSL
|
189
|
+
NPL-1.0
|
190
|
+
NPL-1.1
|
191
|
+
NPOSL-3.0
|
192
|
+
NRL
|
193
|
+
NTP
|
194
|
+
Naumen
|
195
|
+
NetCDF
|
196
|
+
Newsletr
|
197
|
+
Nokia
|
198
|
+
Noweb
|
199
|
+
Nunit
|
200
|
+
OCLC-2.0
|
201
|
+
ODbL-1.0
|
202
|
+
OFL-1.0
|
203
|
+
OFL-1.1
|
204
|
+
OGTSL
|
205
|
+
OLDAP-1.1
|
206
|
+
OLDAP-1.2
|
207
|
+
OLDAP-1.3
|
208
|
+
OLDAP-1.4
|
209
|
+
OLDAP-2.0
|
210
|
+
OLDAP-2.0.1
|
211
|
+
OLDAP-2.1
|
212
|
+
OLDAP-2.2
|
213
|
+
OLDAP-2.2.1
|
214
|
+
OLDAP-2.2.2
|
215
|
+
OLDAP-2.3
|
216
|
+
OLDAP-2.4
|
217
|
+
OLDAP-2.5
|
218
|
+
OLDAP-2.6
|
219
|
+
OLDAP-2.7
|
220
|
+
OLDAP-2.8
|
221
|
+
OML
|
222
|
+
OPL-1.0
|
223
|
+
OSL-1.0
|
224
|
+
OSL-1.1
|
225
|
+
OSL-2.0
|
226
|
+
OSL-2.1
|
227
|
+
OSL-3.0
|
228
|
+
OpenSSL
|
229
|
+
PDDL-1.0
|
230
|
+
PHP-3.0
|
231
|
+
PHP-3.01
|
232
|
+
Plexus
|
233
|
+
PostgreSQL
|
234
|
+
Python-2.0
|
235
|
+
QPL-1.0
|
236
|
+
Qhull
|
237
|
+
RHeCos-1.1
|
238
|
+
RPL-1.1
|
239
|
+
RPL-1.5
|
240
|
+
RPSL-1.0
|
241
|
+
RSA-MD
|
242
|
+
RSCPL
|
243
|
+
Rdisc
|
244
|
+
Ruby
|
245
|
+
SAX-PD
|
246
|
+
SCEA
|
247
|
+
SGI-B-1.0
|
248
|
+
SGI-B-1.1
|
249
|
+
SGI-B-2.0
|
250
|
+
SISSL
|
251
|
+
SISSL-1.2
|
252
|
+
SMLNJ
|
253
|
+
SNIA
|
254
|
+
SPL-1.0
|
255
|
+
SWL
|
256
|
+
Saxpath
|
257
|
+
SimPL-2.0
|
258
|
+
Sleepycat
|
259
|
+
Spencer-86
|
260
|
+
Spencer-94
|
261
|
+
Spencer-99
|
262
|
+
SugarCRM-1.1.3
|
263
|
+
TCL
|
264
|
+
TMate
|
265
|
+
TORQUE-1.1
|
266
|
+
TOSL
|
267
|
+
UPL-1.0
|
268
|
+
Unicode-TOU
|
269
|
+
Unlicense
|
270
|
+
VOSTROM
|
271
|
+
VSL-1.0
|
272
|
+
Vim
|
273
|
+
W3C
|
274
|
+
W3C-19980720
|
275
|
+
WTFPL
|
276
|
+
Watcom-1.0
|
277
|
+
Wsuipa
|
278
|
+
X11
|
279
|
+
XFree86-1.1
|
280
|
+
XSkat
|
281
|
+
Xerox
|
282
|
+
Xnet
|
283
|
+
YPL-1.0
|
284
|
+
YPL-1.1
|
285
|
+
ZPL-1.1
|
286
|
+
ZPL-2.0
|
287
|
+
ZPL-2.1
|
288
|
+
Zed
|
289
|
+
Zend-2.0
|
290
|
+
Zimbra-1.3
|
291
|
+
Zimbra-1.4
|
292
|
+
Zlib
|
293
|
+
bzip2-1.0.5
|
294
|
+
bzip2-1.0.6
|
295
|
+
diffmark
|
296
|
+
dvipdfm
|
297
|
+
eGenix
|
298
|
+
gSOAP-1.3b
|
299
|
+
gnuplot
|
300
|
+
iMatix
|
301
|
+
libtiff
|
302
|
+
mpich2
|
303
|
+
psfrag
|
304
|
+
psutils
|
305
|
+
xinetd
|
306
|
+
xpp
|
307
|
+
zlib-acknowledgement
|
308
|
+
).freeze
|
309
|
+
end
|
data/lib/rubygems/util/list.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
module Gem
|
2
|
-
List = Struct.new(:value, :tail)
|
3
|
-
|
4
2
|
class List
|
3
|
+
include Enumerable
|
4
|
+
attr_accessor :value, :tail
|
5
|
+
|
6
|
+
def initialize(value = nil, tail = nil)
|
7
|
+
@value = value
|
8
|
+
@tail = tail
|
9
|
+
end
|
10
|
+
|
5
11
|
def each
|
6
12
|
n = self
|
7
13
|
while n
|
@@ -11,25 +17,7 @@ module Gem
|
|
11
17
|
end
|
12
18
|
|
13
19
|
def to_a
|
14
|
-
|
15
|
-
n = self
|
16
|
-
while n
|
17
|
-
ary.unshift n.value
|
18
|
-
n = n.tail
|
19
|
-
end
|
20
|
-
|
21
|
-
ary
|
22
|
-
end
|
23
|
-
|
24
|
-
def find
|
25
|
-
n = self
|
26
|
-
while n
|
27
|
-
v = n.value
|
28
|
-
return v if yield(v)
|
29
|
-
n = n.tail
|
30
|
-
end
|
31
|
-
|
32
|
-
nil
|
20
|
+
super.reverse
|
33
21
|
end
|
34
22
|
|
35
23
|
def prepend(value)
|
data/lib/rubygems/version.rb
CHANGED
@@ -217,12 +217,14 @@ class Gem::Version
|
|
217
217
|
# Pre-release (alpha) parts, e.g, 5.3.1.b.2 => 5.4, are ignored.
|
218
218
|
|
219
219
|
def bump
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
220
|
+
@bump ||= begin
|
221
|
+
segments = self.segments.dup
|
222
|
+
segments.pop while segments.any? { |s| String === s }
|
223
|
+
segments.pop if segments.size > 1
|
224
|
+
|
225
|
+
segments[-1] = segments[-1].succ
|
226
|
+
self.class.new segments.join(".")
|
227
|
+
end
|
226
228
|
end
|
227
229
|
|
228
230
|
##
|
@@ -230,11 +232,11 @@ class Gem::Version
|
|
230
232
|
# same precision. Version "1.0" is not the same as version "1".
|
231
233
|
|
232
234
|
def eql? other
|
233
|
-
self.class === other and @version == other.
|
235
|
+
self.class === other and @version == other._version
|
234
236
|
end
|
235
237
|
|
236
238
|
def hash # :nodoc:
|
237
|
-
@
|
239
|
+
@version.hash
|
238
240
|
end
|
239
241
|
|
240
242
|
def init_with coder # :nodoc:
|
@@ -291,11 +293,13 @@ class Gem::Version
|
|
291
293
|
# Non-prerelease versions return themselves.
|
292
294
|
|
293
295
|
def release
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
296
|
+
@release ||= if prerelease?
|
297
|
+
segments = self.segments.dup
|
298
|
+
segments.pop while segments.any? { |s| String === s }
|
299
|
+
self.class.new segments.join('.')
|
300
|
+
else
|
301
|
+
self
|
302
|
+
end
|
299
303
|
end
|
300
304
|
|
301
305
|
def segments # :nodoc:
|
@@ -329,7 +333,7 @@ class Gem::Version
|
|
329
333
|
|
330
334
|
def <=> other
|
331
335
|
return unless Gem::Version === other
|
332
|
-
return 0 if @version == other.
|
336
|
+
return 0 if @version == other._version
|
333
337
|
|
334
338
|
lhsegments = segments
|
335
339
|
rhsegments = other.segments
|
@@ -353,4 +357,10 @@ class Gem::Version
|
|
353
357
|
|
354
358
|
return 0
|
355
359
|
end
|
360
|
+
|
361
|
+
protected
|
362
|
+
|
363
|
+
def _version
|
364
|
+
@version
|
365
|
+
end
|
356
366
|
end
|