random-port 0.2.0 → 0.3.0

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: 9a3960a47566f1625908e17fe12c37553c20e431
4
- data.tar.gz: a7533bbd55eb0e11ba25e9477634889eeca20168
2
+ SHA256:
3
+ metadata.gz: 1dbc9a31f4b53484b240f4f2bb37c7f1ed9208bc1e5e31b09df8c95c9aa909d1
4
+ data.tar.gz: 9d6f1d3e5a912ffa03ac3a168bc47d1492775435276a709a33d918b5b103ec00
5
5
  SHA512:
6
- metadata.gz: 78f107699b64c07926eb503c8a3253aa8756adcc5436abb76e3661b78251f9a50ce3fd21c39e73d299000e68679132c173bdca575a5b7d2ca0561fddaff3984a
7
- data.tar.gz: 669969cd33c4523be191195e983245acce4e24ba25b912ba577d4c4708812f10ebb69a75e7e70c38a1af346e35c059c3b09b3c8c9f23d8b622262b5a1f53c271
6
+ metadata.gz: d382bafa4db3b722d8ebefda93d5c5460a3e61581bab49646cc804841f4f7edafb9203c2006557c16ef6aa6b6111ed9db011cd68f3a104b1a165fc8834e31f40
7
+ data.tar.gz: d1318acea077ce7df07d2d514c6b9f676581c8d2b69ddb43337cc148567cdeb16f7c1584559723833319053ae287dbba6ca228a9d236493d6bd52b9433441d3d
data/README.md CHANGED
@@ -46,7 +46,21 @@ RandomPort::Pool::SINGLETON.acquire do |port|
46
46
  end
47
47
  ```
48
48
 
49
- The pool is thread-safe.
49
+ The pool is _not_ thread-safe.
50
+
51
+ # How to contribute
52
+
53
+ Read [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
54
+ Make sure you build is green before you contribute
55
+ your pull request. You will need to have [Ruby](https://www.ruby-lang.org/en/) 2.3+ and
56
+ [Bundler](https://bundler.io/) installed. Then:
57
+
58
+ ```
59
+ $ bundle update
60
+ $ rake
61
+ ```
62
+
63
+ If it's clean and you don't see any error messages, submit your pull request.
50
64
 
51
65
  # License
52
66
 
@@ -26,38 +26,36 @@ require 'socket'
26
26
 
27
27
  module RandomPort
28
28
  # Pool of TPC ports.
29
+ #
30
+ # The class is NOT thread-safe!
31
+ #
29
32
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
30
33
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
31
34
  # License:: MIT
32
35
  class Pool
33
36
  def initialize
34
37
  @ports = []
35
- @mutex = Mutex.new
36
38
  end
37
39
 
38
40
  # Application wide pool of ports
39
41
  SINGLETON = Pool.new
40
42
 
41
43
  def acquire
42
- @mutex.synchronize do
43
- loop do
44
- server = TCPServer.new('127.0.0.1', 0)
45
- port = server.addr[1]
46
- server.close
47
- next if @ports.include?(port)
48
- @ports << port
49
- return port unless block_given?
50
- yield port
51
- @ports.delete(port)
52
- break
53
- end
44
+ loop do
45
+ server = TCPServer.new('127.0.0.1', 0)
46
+ port = server.addr[1]
47
+ server.close
48
+ next if @ports.include?(port)
49
+ @ports << port
50
+ return port unless block_given?
51
+ yield port
52
+ @ports.delete(port)
53
+ break
54
54
  end
55
55
  end
56
56
 
57
57
  def release(port)
58
- @mutex.synchronize do
59
- @ports.delete(port)
60
- end
58
+ @ports.delete(port)
61
59
  end
62
60
  end
63
61
  end
data/random-port.gemspec CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
31
31
  s.rubygems_version = '2.3.3'
32
32
  s.required_ruby_version = '>=2.3'
33
33
  s.name = 'random-port'
34
- s.version = '0.2.0'
34
+ s.version = '0.3.0'
35
35
  s.license = 'MIT'
36
36
  s.summary = 'Random TCP port'
37
37
  s.description = 'Reserves a random TCP port'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: random-port
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-04 00:00:00.000000000 Z
11
+ date: 2018-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  requirements: []
123
123
  rubyforge_project:
124
- rubygems_version: 2.5.2
124
+ rubygems_version: 2.7.6
125
125
  signing_key:
126
126
  specification_version: 2
127
127
  summary: Random TCP port