zold 0.19.2 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|