zold 0.14.47 → 0.14.48

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
2
  SHA256:
3
- metadata.gz: f3e066098cbe84a5b065695c6fdc533a45bb9e5e077537eaedb0d36b8d98f5de
4
- data.tar.gz: eab40577e1cdd5b6b7d08f210ebf2c98b1879c09d38760227b4d7bf670c61d47
3
+ metadata.gz: 8f5b7d31f8bfda085dd9b8e8eed00aff31ce4d70c32458508e9cfb9f3057b93e
4
+ data.tar.gz: 3baeace7cbb639c8c789e0d7131f2fb9c5a2d5a46f32f202ecd98e0ec1fb1300
5
5
  SHA512:
6
- metadata.gz: db883f083ea6c65dc4f396e01566876f347202d80cef8ff3bc792df14c088f085cdd72a9b36ea2ee24e8a0162c1bb1d0ed8c39c418918b0062cfb965872352cd
7
- data.tar.gz: 388beed99a60d17b4cc0a5fd2f4148379e0c91c4a1aa6fa62488574efb07ba137715c784f5c65151e68540bdafb73641fe35c2701ca85d699e2c04239d1b8649
6
+ metadata.gz: 69c2ce749f200770aada7c0bd5d9afdde9574012b652597dd0b650f2a749fde65de16e7c8493b405f25de5c95775c211345cbb8fd3d8d8e6b566ff6967bd982f
7
+ data.tar.gz: 3c6d7228040fb58970d9f96961e1db7efd3ea2468de61b30008dd280508e907e07110b13c24e81da5252ee83f7af38e3d9b36cf368958f9af37c390d6e8afc1b
@@ -115,9 +115,9 @@ Available options:"
115
115
  raise 'The wallet is absent' unless wallet.exists?
116
116
  tax = Tax.new(wallet)
117
117
  debt = tax.debt
118
- @log.info("The current debt is #{debt} (#{debt.to_i} zents)")
118
+ @log.info("The current debt of #{wallet.id}/#{wallet.txns.count}t is #{debt} (#{debt.to_i} zents)")
119
119
  unless tax.in_debt?
120
- @log.debug("No need to pay taxes yet, until the debt is less than #{Tax::TRIAL} (#{Tax::TRIAL.to_i} zents)")
120
+ @log.debug("No need to pay taxes yet, while the debt is less than #{Tax::TRIAL} (#{Tax::TRIAL.to_i} zents)")
121
121
  return
122
122
  end
123
123
  top = top_scores(opts)
@@ -36,18 +36,24 @@ module Zold
36
36
  @log = log
37
37
  @routines = []
38
38
  @threads = []
39
+ @starts = {}
39
40
  @failures = {}
40
41
  end
41
42
 
42
43
  def to_text
43
- @threads.map do |t|
44
- [
45
- "#{t.name}:",
46
- "status=#{t.status};",
47
- "alive=#{t.alive?};\n",
48
- t.backtrace.nil? ? '---' : " #{t.backtrace.join("\n ")}"
49
- ].join(' ')
50
- end.join("\n") + "\n\n" + @failures.map { |r, f| "#{r}\n#{f}\n" }.join("\n")
44
+ [
45
+ Time.now.utc.iso8601,
46
+ 'Current threads:',
47
+ @threads.map do |t|
48
+ [
49
+ "#{t.name}: status=#{t.status}; alive=#{t.alive?}",
50
+ "Most recent start: #{Age.new(@starts[t])} ago",
51
+ t.backtrace.nil? ? 'NO BACKTRACE' : " #{t.backtrace.join("\n ")}"
52
+ ].join("\n")
53
+ end,
54
+ 'Failures:',
55
+ @failures.map { |r, f| "#{r}\n#{f}\n" }
56
+ ].flatten.join("\n\n")
51
57
  end
52
58
 
53
59
  def add(routine)
@@ -57,19 +63,19 @@ module Zold
57
63
 
58
64
  def start
59
65
  alive = true
60
- @routines.each do |r|
66
+ @routines.each_with_index do |r, idx|
61
67
  @threads << Thread.start do
62
68
  Thread.current.abort_on_exception = true
63
- Thread.current.name = r.class.name
69
+ Thread.current.name = "#{r.class.name}-#{idx}"
64
70
  step = 0
65
71
  while alive
66
- start = Time.now
72
+ @starts[Thread.current] = Time.now
67
73
  begin
68
74
  r.exec(step)
69
- @log.info("Routine #{r.class.name} ##{step} done in #{Age.new(start)}")
75
+ @log.info("Routine #{r.class.name} ##{step} done in #{Age.new(@starts[Thread.current])}")
70
76
  rescue StandardError => e
71
- @failures[r.class.name] = Backtrace.new(e).to_s
72
- @log.error("Routine #{r.class.name} ##{step} failed in #{Age.new(start)}")
77
+ @failures[r.class.name] = Time.now.utc.iso8601 + "\n" + Backtrace.new(e).to_s
78
+ @log.error("Routine #{r.class.name} ##{step} failed in #{Age.new(@starts[Thread.current])}")
73
79
  @log.error(Backtrace.new(e).to_s)
74
80
  end
75
81
  step += 1
data/lib/zold/tax.rb CHANGED
@@ -22,6 +22,7 @@
22
22
 
23
23
  require_relative 'key'
24
24
  require_relative 'id'
25
+ require_relative 'wallet'
25
26
  require_relative 'amount'
26
27
 
27
28
  # Tax transaction.
@@ -54,6 +55,7 @@ module Zold
54
55
  PREFIX = 'TAXES'
55
56
 
56
57
  def initialize(wallet)
58
+ raise "The wallet must be of type Wallet: #{wallet.class.name}" unless wallet.is_a?(Wallet)
57
59
  @wallet = wallet
58
60
  end
59
61
 
data/lib/zold/version.rb CHANGED
@@ -25,6 +25,6 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.14.47'
28
+ VERSION = '0.14.48'
29
29
  PROTOCOL = 2
30
30
  end
data/zold.gemspec CHANGED
@@ -54,32 +54,32 @@ and suggests a different architecture for digital wallet maintenance.'
54
54
  s.test_files = s.files.grep(%r{^(test|features)/})
55
55
  s.rdoc_options = ['--charset=UTF-8']
56
56
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
57
- s.add_runtime_dependency 'backtrace', '0.1.0'
58
- s.add_runtime_dependency 'cachy', '0.4.2'
57
+ s.add_runtime_dependency 'backtrace', '~>0.3'
58
+ s.add_runtime_dependency 'cachy', '~>0.4'
59
59
  s.add_runtime_dependency 'concurrent-ruby', '~>1.0'
60
60
  s.add_runtime_dependency 'cucumber', '~>3.1' # has to stay here for Heroku
61
61
  s.add_runtime_dependency 'diffy', '~>3.2'
62
- s.add_runtime_dependency 'dry-struct', '~>0.5.0'
63
- s.add_runtime_dependency 'dry-types', '~>0.13.2'
64
- s.add_runtime_dependency 'get_process_mem', '0.2.2'
62
+ s.add_runtime_dependency 'dry-struct', '~>0.5'
63
+ s.add_runtime_dependency 'dry-types', '~>0.13'
64
+ s.add_runtime_dependency 'get_process_mem', '~>0.2'
65
65
  s.add_runtime_dependency 'json', '~>1.8'
66
- s.add_runtime_dependency 'moneta', '1.0.0'
66
+ s.add_runtime_dependency 'moneta', '~>1.0'
67
67
  s.add_runtime_dependency 'openssl', '~>2.1'
68
68
  s.add_runtime_dependency 'rainbow', '~>3.0'
69
69
  s.add_runtime_dependency 'rake', '~>12.3' # has to stay here for Heroku
70
70
  s.add_runtime_dependency 'rubocop', '0.58.1' # has to stay here for Heroku
71
- s.add_runtime_dependency 'rubocop-rspec', '1.27.0' # has to stay here for Heroku
71
+ s.add_runtime_dependency 'rubocop-rspec', '~>1.27' # has to stay here for Heroku
72
72
  s.add_runtime_dependency 'semantic', '~>1.6'
73
73
  s.add_runtime_dependency 'sigdump', '~>0.2'
74
74
  s.add_runtime_dependency 'sinatra', '~>2.0'
75
75
  s.add_runtime_dependency 'slop', '~>4.4'
76
- s.add_runtime_dependency 'sys-proctable', '1.1.5'
77
- s.add_runtime_dependency 'usagewatch_ext', '0.2.0'
76
+ s.add_runtime_dependency 'sys-proctable', '~>1.1'
77
+ s.add_runtime_dependency 'usagewatch_ext', '~>0.2'
78
78
  s.add_runtime_dependency 'xcop', '~>0.5'
79
- s.add_development_dependency 'codecov', '0.1.10'
80
- s.add_development_dependency 'minitest', '5.11.3'
79
+ s.add_development_dependency 'codecov', '~>0.1'
80
+ s.add_development_dependency 'minitest', '~>5.11'
81
81
  s.add_development_dependency 'random-port', '~>0.1'
82
- s.add_development_dependency 'rdoc', '4.2.0'
83
- s.add_development_dependency 'rspec-rails', '3.1.0'
84
- s.add_development_dependency 'webmock', '3.4.2'
82
+ s.add_development_dependency 'rdoc', '~>4.2'
83
+ s.add_development_dependency 'rspec-rails', '~>3.1'
84
+ s.add_development_dependency 'webmock', '~>3.4'
85
85
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.47
4
+ version: 0.14.48
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-12 00:00:00.000000000 Z
11
+ date: 2018-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: '0.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0
26
+ version: '0.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cachy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.2
33
+ version: '0.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.4.2
40
+ version: '0.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: concurrent-ruby
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,42 +86,42 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.5.0
89
+ version: '0.5'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.5.0
96
+ version: '0.5'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: dry-types
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.13.2
103
+ version: '0.13'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.13.2
110
+ version: '0.13'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: get_process_mem
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '='
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.2.2
117
+ version: '0.2'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '='
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.2.2
124
+ version: '0.2'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: json
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +140,16 @@ dependencies:
140
140
  name: moneta
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '='
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 1.0.0
145
+ version: '1.0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '='
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 1.0.0
152
+ version: '1.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: openssl
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -210,16 +210,16 @@ dependencies:
210
210
  name: rubocop-rspec
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - '='
213
+ - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 1.27.0
215
+ version: '1.27'
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - '='
220
+ - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 1.27.0
222
+ version: '1.27'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: semantic
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -280,30 +280,30 @@ dependencies:
280
280
  name: sys-proctable
281
281
  requirement: !ruby/object:Gem::Requirement
282
282
  requirements:
283
- - - '='
283
+ - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: 1.1.5
285
+ version: '1.1'
286
286
  type: :runtime
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - '='
290
+ - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: 1.1.5
292
+ version: '1.1'
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: usagewatch_ext
295
295
  requirement: !ruby/object:Gem::Requirement
296
296
  requirements:
297
- - - '='
297
+ - - "~>"
298
298
  - !ruby/object:Gem::Version
299
- version: 0.2.0
299
+ version: '0.2'
300
300
  type: :runtime
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
- - - '='
304
+ - - "~>"
305
305
  - !ruby/object:Gem::Version
306
- version: 0.2.0
306
+ version: '0.2'
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: xcop
309
309
  requirement: !ruby/object:Gem::Requirement
@@ -322,30 +322,30 @@ dependencies:
322
322
  name: codecov
323
323
  requirement: !ruby/object:Gem::Requirement
324
324
  requirements:
325
- - - '='
325
+ - - "~>"
326
326
  - !ruby/object:Gem::Version
327
- version: 0.1.10
327
+ version: '0.1'
328
328
  type: :development
329
329
  prerelease: false
330
330
  version_requirements: !ruby/object:Gem::Requirement
331
331
  requirements:
332
- - - '='
332
+ - - "~>"
333
333
  - !ruby/object:Gem::Version
334
- version: 0.1.10
334
+ version: '0.1'
335
335
  - !ruby/object:Gem::Dependency
336
336
  name: minitest
337
337
  requirement: !ruby/object:Gem::Requirement
338
338
  requirements:
339
- - - '='
339
+ - - "~>"
340
340
  - !ruby/object:Gem::Version
341
- version: 5.11.3
341
+ version: '5.11'
342
342
  type: :development
343
343
  prerelease: false
344
344
  version_requirements: !ruby/object:Gem::Requirement
345
345
  requirements:
346
- - - '='
346
+ - - "~>"
347
347
  - !ruby/object:Gem::Version
348
- version: 5.11.3
348
+ version: '5.11'
349
349
  - !ruby/object:Gem::Dependency
350
350
  name: random-port
351
351
  requirement: !ruby/object:Gem::Requirement
@@ -364,44 +364,44 @@ dependencies:
364
364
  name: rdoc
365
365
  requirement: !ruby/object:Gem::Requirement
366
366
  requirements:
367
- - - '='
367
+ - - "~>"
368
368
  - !ruby/object:Gem::Version
369
- version: 4.2.0
369
+ version: '4.2'
370
370
  type: :development
371
371
  prerelease: false
372
372
  version_requirements: !ruby/object:Gem::Requirement
373
373
  requirements:
374
- - - '='
374
+ - - "~>"
375
375
  - !ruby/object:Gem::Version
376
- version: 4.2.0
376
+ version: '4.2'
377
377
  - !ruby/object:Gem::Dependency
378
378
  name: rspec-rails
379
379
  requirement: !ruby/object:Gem::Requirement
380
380
  requirements:
381
- - - '='
381
+ - - "~>"
382
382
  - !ruby/object:Gem::Version
383
- version: 3.1.0
383
+ version: '3.1'
384
384
  type: :development
385
385
  prerelease: false
386
386
  version_requirements: !ruby/object:Gem::Requirement
387
387
  requirements:
388
- - - '='
388
+ - - "~>"
389
389
  - !ruby/object:Gem::Version
390
- version: 3.1.0
390
+ version: '3.1'
391
391
  - !ruby/object:Gem::Dependency
392
392
  name: webmock
393
393
  requirement: !ruby/object:Gem::Requirement
394
394
  requirements:
395
- - - '='
395
+ - - "~>"
396
396
  - !ruby/object:Gem::Version
397
- version: 3.4.2
397
+ version: '3.4'
398
398
  type: :development
399
399
  prerelease: false
400
400
  version_requirements: !ruby/object:Gem::Requirement
401
401
  requirements:
402
- - - '='
402
+ - - "~>"
403
403
  - !ruby/object:Gem::Version
404
- version: 3.4.2
404
+ version: '3.4'
405
405
  description: |-
406
406
  In the last few years digital currencies have successfully demonstrated
407
407
  their ability to become an alternative financial instrument in many