zold 0.19.2 → 0.20.0
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 +4 -4
- data/.rubocop.yml +4 -2
- data/bin/zold +1 -1
- data/heroku-run.sh +1 -1
- data/lib/zold/commands/merge.rb +33 -6
- data/lib/zold/commands/node.rb +1 -1
- data/lib/zold/commands/pull.rb +1 -1
- data/lib/zold/commands/remote.rb +7 -1
- data/lib/zold/commands/show.rb +6 -0
- data/lib/zold/json_page.rb +11 -3
- data/lib/zold/node/entrance.rb +1 -1
- data/lib/zold/node/front.rb +2 -1
- data/lib/zold/patch.rb +17 -7
- data/lib/zold/version.rb +1 -1
- data/test/commands/test_merge.rb +8 -7
- data/test/test_json_page.rb +7 -1
- data/zold.gemspec +5 -5
- metadata +23 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cf98ca9682d1320a73b1abcd73b8d7b05e38e36104cf7b9aa70d5c74f182537
|
4
|
+
data.tar.gz: 1c63b8e0ce591b4b2082e84a2858ceac34b85c1310f4cd52a209555e8ed55443
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17d3f4eaa73d06fc4afa419e7acb6cb5a3570150d877cf185c446b5dc75eae9f339a446a3359ccdbcb96e43cf96f18bc55ad66b972bac21b0d511d4e939e2723
|
7
|
+
data.tar.gz: a4167a3fa33a6d64b3a390d11c4fde7aa645e37f60027e0bb27c73ed4a9385fe0b9240ff0525e8ed511613d8f4383e7170bce2272b53ff52401d45dfbb176bf3
|
data/.rubocop.yml
CHANGED
@@ -8,13 +8,15 @@ AllCops:
|
|
8
8
|
Layout/EmptyLineAfterGuardClause:
|
9
9
|
Enabled: false
|
10
10
|
Metrics/CyclomaticComplexity:
|
11
|
-
Max:
|
11
|
+
Max: 30
|
12
12
|
Metrics/MethodLength:
|
13
13
|
Enabled: false
|
14
14
|
Layout/MultilineMethodCallIndentation:
|
15
15
|
Enabled: false
|
16
16
|
Metrics/AbcSize:
|
17
17
|
Enabled: false
|
18
|
+
Metrics/BlockNesting:
|
19
|
+
Max: 4
|
18
20
|
Metrics/BlockLength:
|
19
21
|
Max: 120
|
20
22
|
Metrics/ClassLength:
|
@@ -26,7 +28,7 @@ Metrics/ParameterLists:
|
|
26
28
|
Layout/AlignParameters:
|
27
29
|
Enabled: false
|
28
30
|
Metrics/PerceivedComplexity:
|
29
|
-
Max:
|
31
|
+
Max: 30
|
30
32
|
Metrics/LineLength:
|
31
33
|
Max: 120
|
32
34
|
Style/MultilineBlockChain:
|
data/bin/zold
CHANGED
@@ -222,7 +222,7 @@ cmd = lambda do
|
|
222
222
|
Zold::Diff.new(wallets: wallets, copies: copies, log: log).run(args)
|
223
223
|
when 'merge'
|
224
224
|
require_relative '../lib/zold/commands/merge'
|
225
|
-
Zold::Merge.new(wallets: wallets, copies: copies, log: log).run(args)
|
225
|
+
Zold::Merge.new(wallets: wallets, remotes: remotes, copies: copies, log: log).run(args)
|
226
226
|
when 'propagate'
|
227
227
|
require_relative '../lib/zold/commands/propagate'
|
228
228
|
Zold::Propagate.new(wallets: wallets, log: log).run(args)
|
data/heroku-run.sh
CHANGED
data/lib/zold/commands/merge.rb
CHANGED
@@ -25,6 +25,7 @@ require 'rainbow'
|
|
25
25
|
require 'backtrace'
|
26
26
|
require_relative 'thread_badge'
|
27
27
|
require_relative 'args'
|
28
|
+
require_relative 'pull'
|
28
29
|
require_relative '../age'
|
29
30
|
require_relative '../log'
|
30
31
|
require_relative '../id'
|
@@ -40,8 +41,9 @@ module Zold
|
|
40
41
|
class Merge
|
41
42
|
prepend ThreadBadge
|
42
43
|
|
43
|
-
def initialize(wallets:, copies:, log: Log::NULL)
|
44
|
+
def initialize(wallets:, remotes:, copies:, log: Log::NULL)
|
44
45
|
@wallets = wallets
|
46
|
+
@remotes = remotes
|
45
47
|
@copies = copies
|
46
48
|
@log = log
|
47
49
|
end
|
@@ -57,6 +59,15 @@ Available options:"
|
|
57
59
|
o.bool '--skip-propagate',
|
58
60
|
'Don\'t propagate after merge',
|
59
61
|
default: false
|
62
|
+
o.bool '--skip-legacy',
|
63
|
+
'Don\'t make legacy transactions (older than 24 hours) immutable',
|
64
|
+
default: false
|
65
|
+
o.bool '--shallow',
|
66
|
+
'Don\'t try to pull other wallets if their confirmations are required',
|
67
|
+
default: false
|
68
|
+
o.string '--network',
|
69
|
+
'The name of the network we work in',
|
70
|
+
default: 'test'
|
60
71
|
o.bool '--help', 'Print instructions'
|
61
72
|
end
|
62
73
|
mine = Args.new(opts, @log).take || return
|
@@ -78,6 +89,15 @@ Available options:"
|
|
78
89
|
cps = cps.all.sort_by { |c| c[:score] }.reverse
|
79
90
|
patch = Patch.new(@wallets, log: @log)
|
80
91
|
score = 0
|
92
|
+
unless opts['skip-legacy']
|
93
|
+
@wallets.acq(id) do |w|
|
94
|
+
if w.exists?
|
95
|
+
s = Time.now
|
96
|
+
merge_one(opts, patch, w, 'localhost', legacy: true)
|
97
|
+
@log.debug("Local legacy copy of #{id} merged in #{Age.new(s)}: #{patch}")
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
81
101
|
cps.each_with_index do |c, idx|
|
82
102
|
wallet = Wallet.new(c[:path])
|
83
103
|
name = "#{c[:name]}/#{idx}/#{c[:score]}"
|
@@ -86,8 +106,9 @@ Available options:"
|
|
86
106
|
end
|
87
107
|
@wallets.acq(id) do |w|
|
88
108
|
if w.exists?
|
109
|
+
s = Time.now
|
89
110
|
merge_one(opts, patch, w, 'localhost')
|
90
|
-
@log.debug("Local copy of #{id} merged in #{Age.new(
|
111
|
+
@log.debug("Local copy of #{id} merged in #{Age.new(s)}: #{patch}")
|
91
112
|
else
|
92
113
|
@log.debug("Local copy of #{id} is absent, nothing to merge")
|
93
114
|
end
|
@@ -103,11 +124,17 @@ into #{@wallets.acq(id, &:mnemo)} in #{Age.new(start, limit: 0.1 + cps.count * 0
|
|
103
124
|
modified
|
104
125
|
end
|
105
126
|
|
106
|
-
def merge_one(opts, patch, wallet, name)
|
127
|
+
def merge_one(opts, patch, wallet, name, legacy: false)
|
107
128
|
start = Time.now
|
108
|
-
@log.debug("Building a patch for #{wallet.id} from remote copy
|
109
|
-
patch.join(wallet, !opts['no-baseline'])
|
110
|
-
|
129
|
+
@log.debug("Building a patch for #{wallet.id} from remote copy ##{name} with #{wallet.mnemo}...")
|
130
|
+
patch.join(wallet, baseline: !opts['no-baseline'], legacy: legacy) do |id|
|
131
|
+
unless opts['shallow']
|
132
|
+
Pull.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run(
|
133
|
+
['pull', id.to_s, "--network=#{opts['network']}", '--shallow']
|
134
|
+
)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
@log.debug("Copy ##{name} of #{wallet.id} merged in #{Age.new(start)}: #{patch}")
|
111
138
|
rescue StandardError => e
|
112
139
|
@log.error("Can't merge copy #{name}: #{e.message}")
|
113
140
|
@log.debug(Backtrace.new(e).to_s)
|
data/lib/zold/commands/node.rb
CHANGED
@@ -223,7 +223,7 @@ module Zold
|
|
223
223
|
end
|
224
224
|
hungry = Zold::ThreadPool.new('hungry', log: @log)
|
225
225
|
wts = Zold::HungryWallets.new(@wallets, @remotes, @copies, hungry, log: @log, network: opts['network'])
|
226
|
-
Front.set(:zache, Zache.new)
|
226
|
+
Front.set(:zache, Zache.new(dirty: true))
|
227
227
|
Front.set(:wallets, wts)
|
228
228
|
Front.set(:remotes, @remotes)
|
229
229
|
Front.set(:copies, @copies)
|
data/lib/zold/commands/pull.rb
CHANGED
@@ -45,7 +45,7 @@ module Zold
|
|
45
45
|
def run(args = [])
|
46
46
|
Zold::Clean.new(wallets: @wallets, copies: @copies, log: @log).run(args)
|
47
47
|
Zold::Fetch.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run(args)
|
48
|
-
Zold::Merge.new(wallets: @wallets, copies: @copies, log: @log).run(args)
|
48
|
+
Zold::Merge.new(wallets: @wallets, remotes: @remotes, copies: @copies, log: @log).run(args)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
data/lib/zold/commands/remote.rb
CHANGED
@@ -163,7 +163,13 @@ Available options:"
|
|
163
163
|
def show
|
164
164
|
@remotes.all.each do |r|
|
165
165
|
score = Rainbow("/#{r[:score]}").color(r[:score].positive? ? :green : :red)
|
166
|
-
@log.info(
|
166
|
+
@log.info(
|
167
|
+
[
|
168
|
+
"#{r[:host]}:#{r[:port]}#{score}",
|
169
|
+
r[:errors].positive? ? " #{r[:errors]} errors" : '',
|
170
|
+
r[:master] ? ' [master]' : ''
|
171
|
+
].join
|
172
|
+
)
|
167
173
|
end
|
168
174
|
end
|
169
175
|
|
data/lib/zold/commands/show.rb
CHANGED
@@ -77,6 +77,7 @@ Available options:"
|
|
77
77
|
end
|
78
78
|
@log.info(
|
79
79
|
[
|
80
|
+
'',
|
80
81
|
"The balance of #{wallet}: #{balance} (#{balance.to_i} zents)",
|
81
82
|
"Network: #{wallet.network}",
|
82
83
|
"Transactions: #{wallet.txns.count}",
|
@@ -86,6 +87,11 @@ Available options:"
|
|
86
87
|
"Digest: #{wallet.digest}"
|
87
88
|
].join("\n")
|
88
89
|
)
|
90
|
+
@log.info(
|
91
|
+
"\n" + Copies.new(File.join(@copies, wallet.id)).all.map do |c|
|
92
|
+
"##{c[:name]}: #{c[:score]} #{Wallet.new(c[:path]).mnemo}"
|
93
|
+
end.join("\n")
|
94
|
+
)
|
89
95
|
balance
|
90
96
|
end
|
91
97
|
end
|
data/lib/zold/json_page.rb
CHANGED
@@ -29,6 +29,9 @@ require 'json'
|
|
29
29
|
module Zold
|
30
30
|
# JSON page
|
31
31
|
class JsonPage
|
32
|
+
# When can't parse the JSON page.
|
33
|
+
class CantParse < StandardError; end
|
34
|
+
|
32
35
|
def initialize(text, uri = '')
|
33
36
|
raise 'JSON text can\'t be nil' if text.nil?
|
34
37
|
raise 'JSON must be of type String' unless text.is_a?(String)
|
@@ -37,11 +40,16 @@ module Zold
|
|
37
40
|
end
|
38
41
|
|
39
42
|
def to_hash
|
40
|
-
raise 'JSON is empty, can\'t parse' + (@uri.empty? ? '' : " at #{@uri}") if @text.empty?
|
43
|
+
raise CantParse, 'JSON is empty, can\'t parse' + (@uri.empty? ? '' : " at #{@uri}") if @text.empty?
|
41
44
|
JSON.parse(@text)
|
42
45
|
rescue JSON::ParserError => e
|
43
|
-
raise "Failed to parse JSON #{@uri.empty? ? '' : "at #{@uri}"} (#{e.message}):
|
44
|
-
|
46
|
+
raise CantParse, "Failed to parse JSON #{@uri.empty? ? '' : "at #{@uri}"} (#{short(e.message)}): #{short(@text)}"
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def short(txt)
|
52
|
+
txt.gsub(/^.{128,}$/, '\1...').inspect
|
45
53
|
end
|
46
54
|
end
|
47
55
|
end
|
data/lib/zold/node/entrance.rb
CHANGED
@@ -78,7 +78,7 @@ module Zold
|
|
78
78
|
).run(['fetch', id.to_s, "--ignore-node=#{@address}", "--network=#{@network}", '--quiet-if-absent'])
|
79
79
|
end
|
80
80
|
modified = Merge.new(
|
81
|
-
wallets: @wallets, copies: copies.root, log: @log
|
81
|
+
wallets: @wallets, remotes: @remotes, copies: copies.root, log: @log
|
82
82
|
).run(['merge', id.to_s, '--no-baseline'])
|
83
83
|
Clean.new(wallets: @wallets, copies: copies.root, log: @log).run(['clean', id.to_s])
|
84
84
|
copies.remove(localhost, Remotes::PORT)
|
data/lib/zold/node/front.rb
CHANGED
@@ -210,7 +210,8 @@ from #{request.ip} in #{Age.new(@start, limit: 1)}")
|
|
210
210
|
end,
|
211
211
|
memory: settings.zache.get(:memory, lifetime: 5 * 60) do
|
212
212
|
mem = GetProcessMem.new.bytes.to_i
|
213
|
-
if mem > settings.opts['oom-limit'] * 1024 * 1024 &&
|
213
|
+
if mem > settings.opts['oom-limit'] * 1024 * 1024 &&
|
214
|
+
!settings.opts['skip-oom'] && !settings.opts['never-reboot']
|
214
215
|
settings.log.error("We are too big in memory (#{Size.new(mem)}), quitting; use --skip-oom to never quit")
|
215
216
|
Front.stop!
|
216
217
|
end
|
data/lib/zold/patch.rb
CHANGED
@@ -43,7 +43,7 @@ module Zold
|
|
43
43
|
"#{@txns.count} txns"
|
44
44
|
end
|
45
45
|
|
46
|
-
def join(wallet, baseline
|
46
|
+
def join(wallet, baseline: true, legacy: false)
|
47
47
|
if @id.nil?
|
48
48
|
@id = wallet.id
|
49
49
|
@key = wallet.key
|
@@ -68,21 +68,23 @@ module Zold
|
|
68
68
|
return
|
69
69
|
end
|
70
70
|
wallet.txns.each do |txn|
|
71
|
+
next if legacy && (txn.amount.positive? || txn.date > Time.now - 24 * 60 * 60)
|
71
72
|
next if @txns.find { |t| t == txn }
|
72
73
|
if txn.amount.negative?
|
73
74
|
dup = @txns.find { |t| t.id == txn.id && t.amount.negative? }
|
74
75
|
if dup
|
75
|
-
@log.error("An attempt to overwrite \"#{dup.to_text}\"
|
76
|
+
@log.error("An attempt to overwrite existing transaction \"#{dup.to_text}\" \
|
77
|
+
with a new one \"#{txn.to_text}\" from #{wallet.mnemo}")
|
76
78
|
next
|
77
79
|
end
|
78
80
|
balance = @txns.map(&:amount).map(&:to_i).inject(&:+).to_i
|
79
81
|
if balance < txn.amount.to_i * -1 && !wallet.root?
|
80
|
-
@log.error("
|
81
|
-
#{wallet.id}/#{Amount.new(zents: balance).to_zld}/#{@txns.size} negative: #{txn.to_text}")
|
82
|
+
@log.error("The transaction ##{txn.id} attempts to make the balance of \
|
83
|
+
#{wallet.id}/#{Amount.new(zents: balance).to_zld}/#{@txns.size} negative: \"#{txn.to_text}\"")
|
82
84
|
next
|
83
85
|
end
|
84
86
|
unless Signature.new(@network).valid?(@key, wallet.id, txn)
|
85
|
-
@log.error("Invalid RSA signature at transaction ##{txn.id} of #{wallet.id}: #{txn.to_text}")
|
87
|
+
@log.error("Invalid RSA signature at the transaction ##{txn.id} of #{wallet.id}: \"#{txn.to_text}\"")
|
86
88
|
next
|
87
89
|
end
|
88
90
|
else
|
@@ -100,8 +102,16 @@ module Zold
|
|
100
102
|
next
|
101
103
|
end
|
102
104
|
unless @wallets.acq(txn.bnf, &:exists?)
|
103
|
-
|
104
|
-
|
105
|
+
if block_given?
|
106
|
+
yield(txn.bnf)
|
107
|
+
unless @wallets.acq(txn.bnf, &:exists?)
|
108
|
+
@log.error("Paying wallet #{txn.bnf} file is absent even after PULL: \"#{txn.to_text}\"")
|
109
|
+
next
|
110
|
+
end
|
111
|
+
else
|
112
|
+
@log.error("Paying wallet #{txn.bnf} file is absent and it's a \"shallow\" MERGE: #{txn.to_text}")
|
113
|
+
next
|
114
|
+
end
|
105
115
|
end
|
106
116
|
unless @wallets.acq(txn.bnf) { |p| p.includes_negative?(txn.id, wallet.id) }
|
107
117
|
@log.error("The beneficiary #{@wallets.acq(txn.bnf, &:mnemo)} of #{@id} \
|
data/lib/zold/version.rb
CHANGED
data/test/commands/test_merge.rb
CHANGED
@@ -54,7 +54,7 @@ class TestMerge < Zold::Test
|
|
54
54
|
copies = home.copies(wallet)
|
55
55
|
copies.add(IO.read(first.path), 'host-1', 80, 5)
|
56
56
|
copies.add(IO.read(second.path), 'host-2', 80, 5)
|
57
|
-
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: test_log).run(
|
57
|
+
modified = Zold::Merge.new(wallets: home.wallets, remotes: home.remotes, copies: copies.root, log: test_log).run(
|
58
58
|
['merge', wallet.id.to_s]
|
59
59
|
)
|
60
60
|
assert(1, modified.count)
|
@@ -75,7 +75,7 @@ class TestMerge < Zold::Test
|
|
75
75
|
copies = home.copies(wallet)
|
76
76
|
copies.add(IO.read(first.path), 'host-1', 80, 5)
|
77
77
|
copies.add(IO.read(second.path), 'host-2', 80, 5)
|
78
|
-
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: test_log).run(
|
78
|
+
modified = Zold::Merge.new(wallets: home.wallets, remotes: home.remotes, copies: copies.root, log: test_log).run(
|
79
79
|
['merge', wallet.id.to_s]
|
80
80
|
)
|
81
81
|
assert(1, modified.count)
|
@@ -89,7 +89,7 @@ class TestMerge < Zold::Test
|
|
89
89
|
copies = home.copies(wallet)
|
90
90
|
copies.add(IO.read(wallet.path), 'good-host', 80, 5)
|
91
91
|
copies.add('some garbage', 'bad-host', 80, 5)
|
92
|
-
modified = Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: test_log).run(
|
92
|
+
modified = Zold::Merge.new(wallets: home.wallets, remotes: home.remotes, copies: copies.root, log: test_log).run(
|
93
93
|
['merge', wallet.id.to_s]
|
94
94
|
)
|
95
95
|
assert(modified.empty?)
|
@@ -103,7 +103,7 @@ class TestMerge < Zold::Test
|
|
103
103
|
copies.add(IO.read(wallet.path), 'good-host', 80, 5)
|
104
104
|
key = Zold::Key.new(file: 'fixtures/id_rsa')
|
105
105
|
wallet.sub(Zold::Amount.new(zld: 9.99), "NOPREFIX@#{Zold::Id.new}", key)
|
106
|
-
Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: test_log).run(
|
106
|
+
Zold::Merge.new(wallets: home.wallets, remotes: home.remotes, copies: copies.root, log: test_log).run(
|
107
107
|
['merge', wallet.id.to_s]
|
108
108
|
)
|
109
109
|
assert(!wallet.balance.zero?)
|
@@ -118,7 +118,7 @@ class TestMerge < Zold::Test
|
|
118
118
|
remote.add(Zold::Txn.new(1, Time.now, Zold::Amount.new(zld: 11.0), 'NOPREFIX', Zold::Id.new, 'fake'))
|
119
119
|
copies = home.copies(main)
|
120
120
|
copies.add(IO.read(remote.path), 'fake-host', 80, 0)
|
121
|
-
Zold::Merge.new(wallets: home.wallets, copies: copies.root, log: test_log).run(
|
121
|
+
Zold::Merge.new(wallets: home.wallets, remotes: home.remotes, copies: copies.root, log: test_log).run(
|
122
122
|
['merge', main.id.to_s, '--no-baseline']
|
123
123
|
)
|
124
124
|
assert_equal(Zold::Amount::ZERO, main.balance)
|
@@ -130,7 +130,7 @@ class TestMerge < Zold::Test
|
|
130
130
|
wallet = home.create_wallet
|
131
131
|
key = Zold::Key.new(file: 'fixtures/id_rsa')
|
132
132
|
wallet.sub(Zold::Amount.new(zld: 9.99), "NOPREFIX@#{Zold::Id.new}", key)
|
133
|
-
Zold::Merge.new(wallets: home.wallets, copies: home.copies.root, log: test_log).run(
|
133
|
+
Zold::Merge.new(wallets: home.wallets, remotes: home.remotes, copies: home.copies.root, log: test_log).run(
|
134
134
|
['merge', wallet.id.to_s, '--no-baseline']
|
135
135
|
)
|
136
136
|
assert_equal(Zold::Amount::ZERO, wallet.balance)
|
@@ -147,7 +147,8 @@ class TestMerge < Zold::Test
|
|
147
147
|
FileUtils.cp('fixtures/merge/asserts.rb', dir)
|
148
148
|
wallets = Zold::Wallets.new(dir)
|
149
149
|
copies = File.join(dir, 'copies')
|
150
|
-
Zold::
|
150
|
+
remotes = Zold::Remotes.new(file: File.join(dir, 'remotes'))
|
151
|
+
Zold::Merge.new(wallets: wallets, remotes: remotes, copies: copies, log: test_log).run(
|
151
152
|
%w[merge 0123456789abcdef]
|
152
153
|
)
|
153
154
|
Dir.chdir(dir) do
|
data/test/test_json_page.rb
CHANGED
@@ -34,8 +34,14 @@ class TestJsonPage < Zold::Test
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_parses_broken_json_page
|
37
|
-
assert_raises do
|
37
|
+
assert_raises Zold::JsonPage::CantParse do
|
38
38
|
Zold::JsonPage.new('not json').to_hash
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
def test_parses_empty_page
|
43
|
+
assert_raises Zold::JsonPage::CantParse do
|
44
|
+
Zold::JsonPage.new('').to_hash
|
45
|
+
end
|
46
|
+
end
|
41
47
|
end
|
data/zold.gemspec
CHANGED
@@ -61,11 +61,11 @@ and suggests a different architecture for digital wallet maintenance.'
|
|
61
61
|
s.test_files = s.files.grep(%r{^(test|features)/})
|
62
62
|
s.rdoc_options = ['--charset=UTF-8']
|
63
63
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
64
|
-
s.add_runtime_dependency 'backtrace', '
|
64
|
+
s.add_runtime_dependency 'backtrace', '>=0.3'
|
65
65
|
s.add_runtime_dependency 'concurrent-ruby', '1.1.3'
|
66
66
|
s.add_runtime_dependency 'cucumber', '3.1.2' # has to stay here for Heroku
|
67
67
|
s.add_runtime_dependency 'diffy', '3.2.1'
|
68
|
-
s.add_runtime_dependency 'futex', '
|
68
|
+
s.add_runtime_dependency 'futex', '>=0.8.1'
|
69
69
|
s.add_runtime_dependency 'get_process_mem', '~>0.2'
|
70
70
|
s.add_runtime_dependency 'json', '2.1.0'
|
71
71
|
s.add_runtime_dependency 'memory_profiler', '0.9.12'
|
@@ -79,11 +79,11 @@ and suggests a different architecture for digital wallet maintenance.'
|
|
79
79
|
s.add_runtime_dependency 'slop', '4.6.2'
|
80
80
|
s.add_runtime_dependency 'sys-proctable', '1.2.1'
|
81
81
|
s.add_runtime_dependency 'thin', '1.7.2'
|
82
|
-
s.add_runtime_dependency 'threads', '
|
82
|
+
s.add_runtime_dependency 'threads', '>=0.3'
|
83
83
|
s.add_runtime_dependency 'typhoeus', '1.3.1'
|
84
84
|
s.add_runtime_dependency 'usagewatch_ext', '0.2.1'
|
85
|
-
s.add_runtime_dependency 'xcop', '
|
86
|
-
s.add_runtime_dependency 'zache', '
|
85
|
+
s.add_runtime_dependency 'xcop', '>=0.6'
|
86
|
+
s.add_runtime_dependency 'zache', '>=0.5.3'
|
87
87
|
s.add_runtime_dependency 'zold-score', '0.4.4'
|
88
88
|
s.add_development_dependency 'codecov', '0.1.13'
|
89
89
|
s.add_development_dependency 'minitest', '5.11.3'
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.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-12-
|
11
|
+
date: 2018-12-19 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'
|
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'
|
26
|
+
version: '0.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: concurrent-ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: futex
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.8.1
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.8.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: get_process_mem
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -266,16 +266,16 @@ dependencies:
|
|
266
266
|
name: threads
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
268
268
|
requirements:
|
269
|
-
- - "
|
269
|
+
- - ">="
|
270
270
|
- !ruby/object:Gem::Version
|
271
|
-
version: '0'
|
271
|
+
version: '0.3'
|
272
272
|
type: :runtime
|
273
273
|
prerelease: false
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
|
-
- - "
|
276
|
+
- - ">="
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version: '0'
|
278
|
+
version: '0.3'
|
279
279
|
- !ruby/object:Gem::Dependency
|
280
280
|
name: typhoeus
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -308,30 +308,30 @@ dependencies:
|
|
308
308
|
name: xcop
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|
310
310
|
requirements:
|
311
|
-
- - "
|
311
|
+
- - ">="
|
312
312
|
- !ruby/object:Gem::Version
|
313
|
-
version: '0'
|
313
|
+
version: '0.6'
|
314
314
|
type: :runtime
|
315
315
|
prerelease: false
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
317
317
|
requirements:
|
318
|
-
- - "
|
318
|
+
- - ">="
|
319
319
|
- !ruby/object:Gem::Version
|
320
|
-
version: '0'
|
320
|
+
version: '0.6'
|
321
321
|
- !ruby/object:Gem::Dependency
|
322
322
|
name: zache
|
323
323
|
requirement: !ruby/object:Gem::Requirement
|
324
324
|
requirements:
|
325
|
-
- - "
|
325
|
+
- - ">="
|
326
326
|
- !ruby/object:Gem::Version
|
327
|
-
version:
|
327
|
+
version: 0.5.3
|
328
328
|
type: :runtime
|
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:
|
334
|
+
version: 0.5.3
|
335
335
|
- !ruby/object:Gem::Dependency
|
336
336
|
name: zold-score
|
337
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -690,7 +690,7 @@ licenses:
|
|
690
690
|
- MIT
|
691
691
|
metadata: {}
|
692
692
|
post_install_message: |-
|
693
|
-
Thanks for installing Zold 0.
|
693
|
+
Thanks for installing Zold 0.20.0!
|
694
694
|
Study our White Paper: https://papers.zold.io/wp.pdf
|
695
695
|
Read our blog posts: https://blog.zold.io
|
696
696
|
Try online wallet at: https://wts.zold.io
|