ipaddr 1.1.0 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3cb27d00fb843e1943f1a7640504fc2ea8970a91
4
- data.tar.gz: ab0c6306a7f5b36fce8e5f6c472864cf52598d0e
2
+ SHA256:
3
+ metadata.gz: d2856d459b11572a7c59a6ad57ec0462b5e851a5c2a012cb6d106a8be15e3739
4
+ data.tar.gz: e8bf2d309cd922ad6c10af07f359034264be462b926718b4d8524e068084fa5f
5
5
  SHA512:
6
- metadata.gz: '0197f4cad3d5497974b2669b49d66c658dc21ce8f5f17df574c16badea57fd0cac83c776cf3f646555049789cd9c0184f226ac9ec90a32285f3d46bc4809aab6'
7
- data.tar.gz: 37ac683429dd8c03202a50feb3c1b1155ebe1ff8e4f42e6707d8be5dae6ba5a21990a7b0e06c145c8e449f64deb446c664b90970ef2e3cb575dc0efe47255371
6
+ metadata.gz: 372737acde9b6852b407d6b38df6392ea2240589eda19798e14fd01184594f0a9ef7d3a30d7f3ce5d178d314ff535a92fb1400f9895863c49047229175e1e350
7
+ data.tar.gz: 46aaa06ed661f88c99b63f844855ec91e9b17639799d5d3d980a77f7db236306511671d6f38b562d08fcdd35150b5bea1adccef2b182c7c8e5563a6439b374d7
data/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  IPAddr provides a set of methods to manipulate an IP address. Both
4
4
  IPv4 and IPv6 are supported.
5
5
 
6
+ [![Build Status](https://travis-ci.org/ruby/ipaddr.svg?branch=master)](https://travis-ci.org/ruby/ipaddr)
7
+
6
8
  ## Installation
7
9
 
8
10
  This library is part of the standard ruby distribution as default gem
@@ -13,7 +15,7 @@ version than comes with older versions of ruby.
13
15
  For example, you can add this line to your application's Gemfile:
14
16
 
15
17
  ```ruby
16
- gem 'ipaddr', '~> 1.1'
18
+ gem 'ipaddr', '~> 1.2'
17
19
  ```
18
20
 
19
21
  And then execute:
data/ipaddr.gemspec CHANGED
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # coding: utf-8
2
3
  lib = File.expand_path("../lib", __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
 
5
6
  Gem::Specification.new do |spec|
6
7
  spec.name = "ipaddr"
7
- spec.version = "1.1.0"
8
+ spec.version = "1.2.3"
8
9
  spec.authors = ["Akinori MUSHA", "Hajimu UMEMOTO"]
9
10
  spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
10
11
 
@@ -14,13 +15,10 @@ IPAddr provides a set of methods to manipulate an IP address.
14
15
  Both IPv4 and IPv6 are supported.
15
16
  DESCRIPTION
16
17
  spec.homepage = "https://github.com/ruby/ipaddr"
18
+ spec.licenses = ["Ruby", "BSD-2-Clause"]
17
19
 
18
- spec.files = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "ipaddr.gemspec", "lib/ipaddr.rb"]
19
- spec.bindir = "exe"
20
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.files = ["LICENSE.txt", "README.md", "ipaddr.gemspec", "lib/ipaddr.rb"]
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.15"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "test-unit"
23
+ spec.required_ruby_version = ">= 2.3"
26
24
  end
data/lib/ipaddr.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  #
3
3
  # ipaddr.rb - A class to manipulate an IP address
4
4
  #
@@ -103,22 +103,21 @@ class IPAddr
103
103
 
104
104
  # Creates a new ipaddr containing the given network byte ordered
105
105
  # string form of an IP address.
106
- def IPAddr::new_ntoh(addr)
107
- return IPAddr.new(IPAddr::ntop(addr))
106
+ def self.new_ntoh(addr)
107
+ return new(ntop(addr))
108
108
  end
109
109
 
110
110
  # Convert a network byte ordered string form of an IP address into
111
111
  # human readable form.
112
- def IPAddr::ntop(addr)
112
+ def self.ntop(addr)
113
113
  case addr.size
114
114
  when 4
115
- s = addr.unpack('C4').join('.')
115
+ addr.unpack('C4').join('.')
116
116
  when 16
117
- s = IN6FORMAT % addr.unpack('n8')
117
+ IN6FORMAT % addr.unpack('n8')
118
118
  else
119
119
  raise AddressFamilyError, "unsupported address family"
120
120
  end
121
- return s
122
121
  end
123
122
 
124
123
  # Returns a new ipaddr built by bitwise AND.
@@ -168,34 +167,17 @@ class IPAddr
168
167
  # net1 = IPAddr.new("192.168.2.0/24")
169
168
  # net2 = IPAddr.new("192.168.2.100")
170
169
  # net3 = IPAddr.new("192.168.3.0")
170
+ # net4 = IPAddr.new("192.168.2.0/16")
171
171
  # p net1.include?(net2) #=> true
172
172
  # p net1.include?(net3) #=> false
173
+ # p net1.include?(net4) #=> false
174
+ # p net4.include?(net1) #=> true
173
175
  def include?(other)
174
176
  other = coerce_other(other)
175
- if ipv4_mapped?
176
- if (@mask_addr >> 32) != 0xffffffffffffffffffffffff
177
- return false
178
- end
179
- mask_addr = (@mask_addr & IN4MASK)
180
- addr = (@addr & IN4MASK)
181
- family = Socket::AF_INET
182
- else
183
- mask_addr = @mask_addr
184
- addr = @addr
185
- family = @family
186
- end
187
- if other.ipv4_mapped?
188
- other_addr = (other.to_i & IN4MASK)
189
- other_family = Socket::AF_INET
190
- else
191
- other_addr = other.to_i
192
- other_family = other.family
193
- end
194
-
195
- if family != other_family
196
- return false
197
- end
198
- return ((addr & mask_addr) == (other_addr & mask_addr))
177
+ return false unless other.family == family
178
+ range = to_range
179
+ other = other.to_range
180
+ range.begin <= other.begin && range.end >= other.end
199
181
  end
200
182
  alias === include?
201
183
 
@@ -232,7 +214,13 @@ class IPAddr
232
214
  # Returns a string containing the IP address representation in
233
215
  # canonical form.
234
216
  def to_string
235
- return _to_string(@addr)
217
+ str = _to_string(@addr)
218
+
219
+ if @family == Socket::AF_INET6
220
+ str << zone_id.to_s
221
+ end
222
+
223
+ return str
236
224
  end
237
225
 
238
226
  # Returns a network byte ordered string form of the IP address.
@@ -259,6 +247,50 @@ class IPAddr
259
247
  return @family == Socket::AF_INET6
260
248
  end
261
249
 
250
+ # Returns true if the ipaddr is a loopback address.
251
+ def loopback?
252
+ case @family
253
+ when Socket::AF_INET
254
+ @addr & 0xff000000 == 0x7f000000
255
+ when Socket::AF_INET6
256
+ @addr == 1
257
+ else
258
+ raise AddressFamilyError, "unsupported address family"
259
+ end
260
+ end
261
+
262
+ # Returns true if the ipaddr is a private address. IPv4 addresses
263
+ # in 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 as defined in RFC
264
+ # 1918 and IPv6 Unique Local Addresses in fc00::/7 as defined in RFC
265
+ # 4193 are considered private.
266
+ def private?
267
+ case @family
268
+ when Socket::AF_INET
269
+ @addr & 0xff000000 == 0x0a000000 || # 10.0.0.0/8
270
+ @addr & 0xfff00000 == 0xac100000 || # 172.16.0.0/12
271
+ @addr & 0xffff0000 == 0xc0a80000 # 192.168.0.0/16
272
+ when Socket::AF_INET6
273
+ @addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000
274
+ else
275
+ raise AddressFamilyError, "unsupported address family"
276
+ end
277
+ end
278
+
279
+ # Returns true if the ipaddr is a link-local address. IPv4
280
+ # addresses in 169.254.0.0/16 reserved by RFC 3927 and Link-Local
281
+ # IPv6 Unicast Addresses in fe80::/10 reserved by RFC 4291 are
282
+ # considered link-local.
283
+ def link_local?
284
+ case @family
285
+ when Socket::AF_INET
286
+ @addr & 0xffff0000 == 0xa9fe0000 # 169.254.0.0/16
287
+ when Socket::AF_INET6
288
+ @addr & 0xffc0_0000_0000_0000_0000_0000_0000_0000 == 0xfe80_0000_0000_0000_0000_0000_0000_0000
289
+ else
290
+ raise AddressFamilyError, "unsupported address family"
291
+ end
292
+ end
293
+
262
294
  # Returns true if the ipaddr is an IPv4-mapped IPv6 address.
263
295
  def ipv4_mapped?
264
296
  return ipv6? && (@addr >> 32) == 0xffff
@@ -266,6 +298,11 @@ class IPAddr
266
298
 
267
299
  # Returns true if the ipaddr is an IPv4-compatible IPv6 address.
268
300
  def ipv4_compat?
301
+ warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
302
+ _ipv4_compat?
303
+ end
304
+
305
+ def _ipv4_compat?
269
306
  if !ipv6? || (@addr >> 32) != 0
270
307
  return false
271
308
  end
@@ -273,20 +310,25 @@ class IPAddr
273
310
  return a != 0 && a != 1
274
311
  end
275
312
 
313
+ private :_ipv4_compat?
314
+
276
315
  # Returns a new ipaddr built by converting the native IPv4 address
277
316
  # into an IPv4-mapped IPv6 address.
278
317
  def ipv4_mapped
279
318
  if !ipv4?
280
- raise InvalidAddressError, "not an IPv4 address"
319
+ raise InvalidAddressError, "not an IPv4 address: #{@addr}"
281
320
  end
282
- return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
321
+ clone = self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
322
+ clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
323
+ clone
283
324
  end
284
325
 
285
326
  # Returns a new ipaddr built by converting the native IPv4 address
286
327
  # into an IPv4-compatible IPv6 address.
287
328
  def ipv4_compat
329
+ warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
288
330
  if !ipv4?
289
- raise InvalidAddressError, "not an IPv4 address"
331
+ raise InvalidAddressError, "not an IPv4 address: #{@addr}"
290
332
  end
291
333
  return self.clone.set(@addr, Socket::AF_INET6)
292
334
  end
@@ -295,7 +337,7 @@ class IPAddr
295
337
  # native IPv4 address. If the IP address is not an IPv4-mapped or
296
338
  # IPv4-compatible IPv6 address, returns self.
297
339
  def native
298
- if !ipv4_mapped? && !ipv4_compat?
340
+ if !ipv4_mapped? && !_ipv4_compat?
299
341
  return self
300
342
  end
301
343
  return self.clone.set(@addr & IN4MASK, Socket::AF_INET)
@@ -317,7 +359,7 @@ class IPAddr
317
359
  # Returns a string for DNS reverse lookup compatible with RFC3172.
318
360
  def ip6_arpa
319
361
  if !ipv6?
320
- raise InvalidAddressError, "not an IPv6 address"
362
+ raise InvalidAddressError, "not an IPv6 address: #{@addr}"
321
363
  end
322
364
  return _reverse + ".ip6.arpa"
323
365
  end
@@ -325,7 +367,7 @@ class IPAddr
325
367
  # Returns a string for DNS reverse lookup compatible with RFC1886.
326
368
  def ip6_int
327
369
  if !ipv6?
328
- raise InvalidAddressError, "not an IPv6 address"
370
+ raise InvalidAddressError, "not an IPv6 address: #{@addr}"
329
371
  end
330
372
  return _reverse + ".ip6.int"
331
373
  end
@@ -352,7 +394,7 @@ class IPAddr
352
394
 
353
395
  # Returns a hash value used by Hash, Set, and Array classes
354
396
  def hash
355
- return ([@addr, @mask_addr].hash << 1) | (ipv4? ? 0 : 1)
397
+ return ([@addr, @mask_addr, @zone_id].hash << 1) | (ipv4? ? 0 : 1)
356
398
  end
357
399
 
358
400
  # Creates a Range object for the network address.
@@ -396,7 +438,7 @@ class IPAddr
396
438
  when Integer
397
439
  mask!(prefix)
398
440
  else
399
- raise InvalidPrefixError, "prefix must be an integer"
441
+ raise InvalidPrefixError, "prefix must be an integer: #{@addr}"
400
442
  end
401
443
  end
402
444
 
@@ -408,11 +450,42 @@ class IPAddr
408
450
  af = "IPv4"
409
451
  when Socket::AF_INET6
410
452
  af = "IPv6"
453
+ zone_id = @zone_id.to_s
411
454
  else
412
455
  raise AddressFamilyError, "unsupported address family"
413
456
  end
414
- return sprintf("#<%s: %s:%s/%s>", self.class.name,
415
- af, _to_string(@addr), _to_string(@mask_addr))
457
+ return sprintf("#<%s: %s:%s%s/%s>", self.class.name,
458
+ af, _to_string(@addr), zone_id, _to_string(@mask_addr))
459
+ end
460
+
461
+ # Returns the netmask in string format e.g. 255.255.0.0
462
+ def netmask
463
+ _to_string(@mask_addr)
464
+ end
465
+
466
+ # Returns the IPv6 zone identifier, if present.
467
+ # Raises InvalidAddressError if not an IPv6 address.
468
+ def zone_id
469
+ if @family == Socket::AF_INET6
470
+ @zone_id
471
+ else
472
+ raise InvalidAddressError, "not an IPv6 address"
473
+ end
474
+ end
475
+
476
+ # Returns the IPv6 zone identifier, if present.
477
+ # Raises InvalidAddressError if not an IPv6 address.
478
+ def zone_id=(zid)
479
+ if @family == Socket::AF_INET6
480
+ case zid
481
+ when nil, /\A%(\w+)\z/
482
+ @zone_id = zid
483
+ else
484
+ raise InvalidAddressError, "invalid zone identifier for address"
485
+ end
486
+ else
487
+ raise InvalidAddressError, "not an IPv6 address"
488
+ end
416
489
  end
417
490
 
418
491
  protected
@@ -424,11 +497,11 @@ class IPAddr
424
497
  case family[0] ? family[0] : @family
425
498
  when Socket::AF_INET
426
499
  if addr < 0 || addr > IN4MASK
427
- raise InvalidAddressError, "invalid address"
500
+ raise InvalidAddressError, "invalid address: #{@addr}"
428
501
  end
429
502
  when Socket::AF_INET6
430
503
  if addr < 0 || addr > IN6MASK
431
- raise InvalidAddressError, "invalid address"
504
+ raise InvalidAddressError, "invalid address: #{@addr}"
432
505
  end
433
506
  else
434
507
  raise AddressFamilyError, "unsupported address family"
@@ -444,14 +517,21 @@ class IPAddr
444
517
  def mask!(mask)
445
518
  case mask
446
519
  when String
447
- if mask =~ /\A\d+\z/
520
+ case mask
521
+ when /\A(0|[1-9]+\d*)\z/
448
522
  prefixlen = mask.to_i
523
+ when /\A\d+\z/
524
+ raise InvalidPrefixError, "leading zeros in prefix"
449
525
  else
450
526
  m = IPAddr.new(mask)
451
527
  if m.family != @family
452
- raise InvalidPrefixError, "address family is not same"
528
+ raise InvalidPrefixError, "address family is not same: #{@addr}"
453
529
  end
454
530
  @mask_addr = m.to_i
531
+ n = @mask_addr ^ m.instance_variable_get(:@mask_addr)
532
+ unless ((n + 1) & n).zero?
533
+ raise InvalidPrefixError, "invalid mask #{mask}: #{@addr}"
534
+ end
455
535
  @addr &= @mask_addr
456
536
  return self
457
537
  end
@@ -461,13 +541,13 @@ class IPAddr
461
541
  case @family
462
542
  when Socket::AF_INET
463
543
  if prefixlen < 0 || prefixlen > 32
464
- raise InvalidPrefixError, "invalid length"
544
+ raise InvalidPrefixError, "invalid length: #{@addr}"
465
545
  end
466
546
  masklen = 32 - prefixlen
467
547
  @mask_addr = ((IN4MASK >> masklen) << masklen)
468
548
  when Socket::AF_INET6
469
549
  if prefixlen < 0 || prefixlen > 128
470
- raise InvalidPrefixError, "invalid length"
550
+ raise InvalidPrefixError, "invalid length: #{@addr}"
471
551
  end
472
552
  masklen = 128 - prefixlen
473
553
  @mask_addr = ((IN6MASK >> masklen) << masklen)
@@ -511,11 +591,16 @@ class IPAddr
511
591
  raise AddressFamilyError, "unsupported address family: #{family}"
512
592
  end
513
593
  end
514
- prefix, prefixlen = addr.split('/')
594
+ prefix, prefixlen = addr.split('/', 2)
515
595
  if prefix =~ /\A\[(.*)\]\z/i
516
596
  prefix = $1
517
597
  family = Socket::AF_INET6
518
598
  end
599
+ if prefix =~ /\A(.*)(%\w+)\z/
600
+ prefix = $1
601
+ zone_id = $2
602
+ family = Socket::AF_INET6
603
+ end
519
604
  # It seems AI_NUMERICHOST doesn't do the job.
520
605
  #Socket.getaddrinfo(left, nil, Socket::AF_INET6, Socket::SOCK_STREAM, nil,
521
606
  # Socket::AI_NUMERICHOST)
@@ -530,6 +615,7 @@ class IPAddr
530
615
  @addr = in6_addr(prefix)
531
616
  @family = Socket::AF_INET6
532
617
  end
618
+ @zone_id = zone_id
533
619
  if family != Socket::AF_UNSPEC && @family != family
534
620
  raise AddressFamilyError, "address family mismatch"
535
621
  end
@@ -560,8 +646,8 @@ class IPAddr
560
646
  octets = m.captures
561
647
  end
562
648
  octets.inject(0) { |i, s|
563
- (n = s.to_i) < 256 or raise InvalidAddressError, "invalid address"
564
- s.match(/\A0./) and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous"
649
+ (n = s.to_i) < 256 or raise InvalidAddressError, "invalid address: #{@addr}"
650
+ s.match(/\A0./) and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous: #{@addr}"
565
651
  i << 8 | n
566
652
  }
567
653
  end
@@ -578,19 +664,19 @@ class IPAddr
578
664
  right = ''
579
665
  when RE_IPV6ADDRLIKE_COMPRESSED
580
666
  if $4
581
- left.count(':') <= 6 or raise InvalidAddressError, "invalid address"
667
+ left.count(':') <= 6 or raise InvalidAddressError, "invalid address: #{@addr}"
582
668
  addr = in_addr($~[4,4])
583
669
  left = $1
584
670
  right = $3 + '0:0'
585
671
  else
586
672
  left.count(':') <= ($1.empty? || $2.empty? ? 8 : 7) or
587
- raise InvalidAddressError, "invalid address"
673
+ raise InvalidAddressError, "invalid address: #{@addr}"
588
674
  left = $1
589
675
  right = $2
590
676
  addr = 0
591
677
  end
592
678
  else
593
- raise InvalidAddressError, "invalid address"
679
+ raise InvalidAddressError, "invalid address: #{@addr}"
594
680
  end
595
681
  l = left.split(':')
596
682
  r = right.split(':')
metadata CHANGED
@@ -1,58 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipaddr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinori MUSHA
8
8
  - Hajimu UMEMOTO
9
- autorequire:
10
- bindir: exe
9
+ autorequire:
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-21 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '1.15'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '1.15'
28
- - !ruby/object:Gem::Dependency
29
- name: rake
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '10.0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '10.0'
42
- - !ruby/object:Gem::Dependency
43
- name: test-unit
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
12
+ date: 2021-10-25 00:00:00.000000000 Z
13
+ dependencies: []
56
14
  description: |
57
15
  IPAddr provides a set of methods to manipulate an IP address.
58
16
  Both IPv4 and IPv6 are supported.
@@ -63,20 +21,16 @@ executables: []
63
21
  extensions: []
64
22
  extra_rdoc_files: []
65
23
  files:
66
- - ".gitignore"
67
- - ".travis.yml"
68
- - Gemfile
69
24
  - LICENSE.txt
70
25
  - README.md
71
- - Rakefile
72
- - bin/console
73
- - bin/setup
74
26
  - ipaddr.gemspec
75
27
  - lib/ipaddr.rb
76
28
  homepage: https://github.com/ruby/ipaddr
77
- licenses: []
29
+ licenses:
30
+ - Ruby
31
+ - BSD-2-Clause
78
32
  metadata: {}
79
- post_install_message:
33
+ post_install_message:
80
34
  rdoc_options: []
81
35
  require_paths:
82
36
  - lib
@@ -84,16 +38,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
38
  requirements:
85
39
  - - ">="
86
40
  - !ruby/object:Gem::Version
87
- version: '0'
41
+ version: '2.3'
88
42
  required_rubygems_version: !ruby/object:Gem::Requirement
89
43
  requirements:
90
44
  - - ">="
91
45
  - !ruby/object:Gem::Version
92
46
  version: '0'
93
47
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.6.14
96
- signing_key:
48
+ rubygems_version: 3.2.22
49
+ signing_key:
97
50
  specification_version: 4
98
51
  summary: A class to manipulate an IP address in ruby
99
52
  test_files: []
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4
5
- - ruby-head
6
- - jruby
7
- - jruby-head
8
- matrix:
9
- allow_failures:
10
- # Even `rvm use jruby` does not work reliably on Travis:
11
- # https://travis-ci.org/ruby/ipaddr/jobs/277222999
12
- - rvm: jruby
13
- - rvm: jruby-head
14
- before_install: gem install bundler
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in ipaddr.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/test_*.rb"]
8
- end
9
-
10
- task :default => :test
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "ipaddr"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here