shotgunner 0.0.1 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/{shotgunner.rb → shotgunner/parallel.rb} +6 -6
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ec6606a8eab14fe6a3e852250000220fac0241fb7acb77d87e81eddd9545115
|
4
|
+
data.tar.gz: f278873f790da5b90a14c0664dea0941778346a2628c58737ed1905df9d1745f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eab16fc2914834b6a003f8c37735b8226544fe538ebf004fc06c283dae6f743ed5a2d889408b3c35ade831a742063f5ef3f03c565bcfa3f2deed2f2b388bd083
|
7
|
+
data.tar.gz: 546bf51dacc3fdfee6761a9723a723ac60161bb18bd3cffd454be25d8ae1666ae31dea623685f4bfeb4eae6ca8d784485f3b0e91ac336098e76daedc023a5f8d
|
@@ -1,16 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Shotgunner
|
4
|
-
|
4
|
+
module Parallel
|
5
5
|
def self.included(base)
|
6
6
|
base.extend(ClassMethods)
|
7
|
-
base.send(:set_defaults)
|
8
7
|
base.send(:include, InstanceMethods)
|
9
8
|
end
|
10
9
|
|
11
10
|
module InstanceMethods
|
12
11
|
def run(options = {}, &block)
|
13
|
-
self.class.
|
12
|
+
self.class.run(options, &block)
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
@@ -18,7 +17,8 @@ module Shotgunner
|
|
18
17
|
def run(options = {}, &block)
|
19
18
|
mutex = Mutex.new
|
20
19
|
threads = options[:threads] || 4
|
21
|
-
tasks = options[:tasks] || []
|
20
|
+
tasks = options[:tasks]&.dup || []
|
21
|
+
raise ArgumentError, 'There is no tasks array defined!' if tasks.empty?
|
22
22
|
call_results = []
|
23
23
|
threads.times.map do
|
24
24
|
Thread.new(tasks, call_results) do |tasks, call_results|
|
@@ -26,8 +26,8 @@ module Shotgunner
|
|
26
26
|
call_result = yield(task)
|
27
27
|
mutex.synchronize { call_results << call_result }
|
28
28
|
end
|
29
|
-
end
|
30
|
-
end
|
29
|
+
end
|
30
|
+
end.each(&:join)
|
31
31
|
call_results
|
32
32
|
end
|
33
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shotgunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleg Saltykov
|
@@ -16,8 +16,8 @@ executables: []
|
|
16
16
|
extensions: []
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
|
-
- lib/shotgunner.rb
|
20
|
-
homepage:
|
19
|
+
- lib/shotgunner/parallel.rb
|
20
|
+
homepage: https://github.com/nucleom42/shotgunner
|
21
21
|
licenses: []
|
22
22
|
metadata: {}
|
23
23
|
post_install_message:
|
@@ -38,5 +38,5 @@ requirements: []
|
|
38
38
|
rubygems_version: 3.0.8
|
39
39
|
signing_key:
|
40
40
|
specification_version: 4
|
41
|
-
summary:
|
41
|
+
summary: Shotgunner - helps to fetch external api in a parallel way! Fast and furious!
|
42
42
|
test_files: []
|