zold 0.14.47 → 0.14.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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