bario 0.1.0 → 0.1.1
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 +5 -5
- data/.rubocop.yml +1 -1
- data/.travis.yml +3 -5
- data/README.md +19 -0
- data/bario.gemspec +8 -8
- data/config.ru +2 -0
- data/lib/bario/bar.rb +12 -54
- data/lib/bario/null_bar.rb +58 -0
- data/lib/bario/storage.rb +50 -0
- data/lib/bario/version.rb +1 -1
- data/lib/bario/web.rb +1 -1
- metadata +29 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e4422efacaba8324f78fea7ae144ea17599bb071ff4f64417c2079cc9d6685bd
|
4
|
+
data.tar.gz: 76cf570ce91acc8515bd792c15f057c3e861bf06ce65db275daf19d4b9421839
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7b44652033ad8fe87c48608ab189ca0d0b87f3cdb5ac5d4a6767c57c3379983cd14318fb15e944efff482f22f4917e593739a7e2396a17f37e7a063fb40a80e
|
7
|
+
data.tar.gz: 1e10fe268c1d042be9bc92b2a31725d156f49cb7f7eb57c7e22cde8a2f0806bdba819186ab57bdb697e36729f25a6c2e2770f5f2ec1c17f6d0a67f701814a746
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Bario
|
2
2
|
|
3
3
|
[](https://codecov.io/gh/ceritium/bario)
|
4
|
+
[](https://badge.fury.io/rb/bario)
|
5
|
+
[](https://gemnasium.com/github.com/ceritium/bario)
|
6
|
+
[](https://codeclimate.com/github/ceritium/bario/maintainability)
|
7
|
+
|
4
8
|
|
5
9
|
Bario means [Barium](https://en.wikipedia.org/wiki/Barium) in spanish.
|
6
10
|
|
@@ -9,6 +13,21 @@ Bario means [Barium](https://en.wikipedia.org/wiki/Barium) in spanish.
|
|
9
13
|
This gem aim to provide a simple interface to track the progress of your process like background jobs, scripts, cron jobs... with a kind progress bars backed by redis.
|
10
14
|
|
11
15
|
|
16
|
+
This gem still in very early state of development. Some behaviour could change in the future.
|
17
|
+
Ideas, pull requests and any kind of feedback are welcome.
|
18
|
+
|
19
|
+
## Install
|
20
|
+
|
21
|
+
```bash
|
22
|
+
$ gem install bario
|
23
|
+
```
|
24
|
+
|
25
|
+
or add it to the Gemfile
|
26
|
+
```ruby
|
27
|
+
gem "bario"
|
28
|
+
```
|
29
|
+
|
30
|
+
|
12
31
|
## Usage
|
13
32
|
|
14
33
|
Examples:
|
data/bario.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path("
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require "bario/version"
|
6
6
|
|
@@ -18,19 +18,19 @@ Gem::Specification.new do |spec|
|
|
18
18
|
f.match(%r{^(test|spec|features)/})
|
19
19
|
end
|
20
20
|
spec.bindir = "bin"
|
21
|
-
spec.executables = [
|
21
|
+
spec.executables = %w[bario-demo bario-web]
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
24
|
spec.add_dependency "ohm", "~> 3.0"
|
25
|
-
spec.add_dependency "sinatra"
|
26
|
-
spec.add_development_dependency "bundler"
|
27
|
-
spec.add_development_dependency "codecov"
|
25
|
+
spec.add_dependency "sinatra", "2.0.8.1"
|
26
|
+
spec.add_development_dependency "bundler"
|
27
|
+
spec.add_development_dependency "codecov", "~> 0.1"
|
28
28
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
29
29
|
spec.add_development_dependency "guard-rubocop", "~> 1.0"
|
30
|
-
spec.add_development_dependency "rack-test"
|
31
|
-
spec.add_development_dependency "rake"
|
30
|
+
spec.add_development_dependency "rack-test", "~> 1.1"
|
31
|
+
spec.add_development_dependency "rake"
|
32
32
|
spec.add_development_dependency "rspec", "~> 3.0"
|
33
33
|
spec.add_development_dependency "rubocop", "~> 0.51"
|
34
34
|
spec.add_development_dependency "rubocop-rspec", "~> 1.20"
|
35
|
-
spec.add_development_dependency "timecop"
|
35
|
+
spec.add_development_dependency "timecop", "~> 0.9"
|
36
36
|
end
|
data/config.ru
CHANGED
data/lib/bario/bar.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require "forwardable"
|
4
4
|
require "bario/inspector"
|
5
|
+
require "bario/null_bar"
|
6
|
+
require "bario/storage"
|
5
7
|
|
6
8
|
module Bario
|
7
9
|
# Bar encapsulate all the logic to create, list, find, delete and update
|
@@ -18,22 +20,27 @@ module Bario
|
|
18
20
|
|
19
21
|
class << self
|
20
22
|
def find(id)
|
21
|
-
bar =
|
23
|
+
bar = Storage[id]
|
22
24
|
bar ? new(bar) : nil
|
23
25
|
end
|
24
26
|
|
27
|
+
def get(id)
|
28
|
+
bar = Storage[id]
|
29
|
+
bar ? new(bar) : NullBar.new
|
30
|
+
end
|
31
|
+
|
25
32
|
def all
|
26
|
-
collection(
|
33
|
+
collection(Storage.find(root: true))
|
27
34
|
end
|
28
35
|
|
29
36
|
def create(opts = {})
|
30
37
|
opts[:total] ||= DEFAULT_TOTAL
|
31
38
|
opts[:root] = true unless opts.key?(:root)
|
32
39
|
|
33
|
-
bar =
|
40
|
+
bar = Storage.create(opts)
|
34
41
|
|
35
42
|
parent = opts[:parent]
|
36
|
-
parent
|
43
|
+
parent&.children&.push(bar)
|
37
44
|
new(bar)
|
38
45
|
end
|
39
46
|
|
@@ -96,61 +103,12 @@ module Bario
|
|
96
103
|
|
97
104
|
def delete
|
98
105
|
parent = bar.parent
|
99
|
-
parent
|
106
|
+
parent&.children&.delete(bar)
|
100
107
|
bar.delete
|
101
108
|
end
|
102
109
|
|
103
110
|
private
|
104
111
|
|
105
112
|
attr_reader :bar
|
106
|
-
|
107
|
-
# Internal storage backed in redis for bar
|
108
|
-
class InternalBar < Ohm::Model
|
109
|
-
attribute :name
|
110
|
-
index :name
|
111
|
-
|
112
|
-
attribute :root
|
113
|
-
index :root
|
114
|
-
|
115
|
-
attribute :total
|
116
|
-
attribute :current
|
117
|
-
counter :current
|
118
|
-
|
119
|
-
list :children, "Bario::Bar::InternalBar"
|
120
|
-
reference :parent, "Bario::Bar::InternalBar"
|
121
|
-
|
122
|
-
# Extracted from ohm-contrib
|
123
|
-
Timestamp = ->(time) { time && time.to_i.to_s }
|
124
|
-
attribute :created_at, Timestamp
|
125
|
-
attribute :updated_at, Timestamp
|
126
|
-
|
127
|
-
class << self
|
128
|
-
def time_now
|
129
|
-
Time.now.utc.to_i
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def save
|
134
|
-
time_now = self.class.time_now
|
135
|
-
|
136
|
-
self.created_at = time_now if new?
|
137
|
-
self.updated_at = time_now
|
138
|
-
super
|
139
|
-
end
|
140
|
-
|
141
|
-
# Override increment update `updated_at` attribute
|
142
|
-
# `decrement` call to `increment`.
|
143
|
-
def increment(att, count = 1)
|
144
|
-
time_now = self.class.time_now
|
145
|
-
|
146
|
-
redis.queue("HINCRBY", key[:counters], att, count)
|
147
|
-
redis.queue("HSET", key, "updated_at", time_now)
|
148
|
-
|
149
|
-
self.updated_at = time_now
|
150
|
-
redis.commit
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
private_constant :InternalBar
|
155
113
|
end
|
156
114
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bario/bar"
|
4
|
+
|
5
|
+
module Bario
|
6
|
+
# Null version of Bar
|
7
|
+
class NullBar
|
8
|
+
def created_at
|
9
|
+
Time.now.utc
|
10
|
+
end
|
11
|
+
|
12
|
+
def updated_at
|
13
|
+
Time.now.utc
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
""
|
18
|
+
end
|
19
|
+
|
20
|
+
def root
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def total
|
25
|
+
0
|
26
|
+
end
|
27
|
+
|
28
|
+
def current
|
29
|
+
0
|
30
|
+
end
|
31
|
+
|
32
|
+
def percent
|
33
|
+
0.0
|
34
|
+
end
|
35
|
+
|
36
|
+
def bars
|
37
|
+
[]
|
38
|
+
end
|
39
|
+
|
40
|
+
def add_bar(_opts = {})
|
41
|
+
self.class.new
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def method_missing(method, *args, &block)
|
47
|
+
if respond_to?(method)
|
48
|
+
nil
|
49
|
+
else
|
50
|
+
super
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def respond_to_missing?(method_name, _include_private = false)
|
55
|
+
Bario::Bar.instance_methods.include?(method_name)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bario
|
4
|
+
# Internal storage backed in redis for bar
|
5
|
+
class Storage < Ohm::Model
|
6
|
+
attribute :name
|
7
|
+
index :name
|
8
|
+
|
9
|
+
attribute :root
|
10
|
+
index :root
|
11
|
+
|
12
|
+
attribute :total
|
13
|
+
attribute :current
|
14
|
+
counter :current
|
15
|
+
|
16
|
+
list :children, "Bario::Storage"
|
17
|
+
reference :parent, "Bario::Storage"
|
18
|
+
|
19
|
+
# Extracted from ohm-contrib
|
20
|
+
Timestamp = ->(time) { time && time.to_i.to_s }
|
21
|
+
attribute :created_at, Timestamp
|
22
|
+
attribute :updated_at, Timestamp
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def time_now
|
26
|
+
Time.now.utc.to_i
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def save
|
31
|
+
time_now = self.class.time_now
|
32
|
+
|
33
|
+
self.created_at = time_now if new?
|
34
|
+
self.updated_at = time_now
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
# Override increment update `updated_at` attribute
|
39
|
+
# `decrement` call to `increment`.
|
40
|
+
def increment(att, count = 1)
|
41
|
+
time_now = self.class.time_now
|
42
|
+
|
43
|
+
redis.queue("HINCRBY", key[:counters], att, count)
|
44
|
+
redis.queue("HSET", key, "updated_at", time_now)
|
45
|
+
|
46
|
+
self.updated_at = time_now
|
47
|
+
redis.commit
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/bario/version.rb
CHANGED
data/lib/bario/web.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bario
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Galisteo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ohm
|
@@ -28,44 +28,44 @@ dependencies:
|
|
28
28
|
name: sinatra
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.0.8.1
|
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:
|
40
|
+
version: 2.0.8.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: codecov
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '0.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '0.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: guard-rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,30 +98,30 @@ dependencies:
|
|
98
98
|
name: rack-test
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '1.1'
|
104
104
|
type: :development
|
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: '
|
110
|
+
version: '1.1'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
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: '
|
124
|
+
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,16 +168,16 @@ dependencies:
|
|
168
168
|
name: timecop
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - "
|
171
|
+
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
173
|
+
version: '0.9'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
180
|
+
version: '0.9'
|
181
181
|
description:
|
182
182
|
email:
|
183
183
|
- ceritium@gmail.com
|
@@ -207,6 +207,8 @@ files:
|
|
207
207
|
- lib/bario/bar.rb
|
208
208
|
- lib/bario/cli.rb
|
209
209
|
- lib/bario/inspector.rb
|
210
|
+
- lib/bario/null_bar.rb
|
211
|
+
- lib/bario/storage.rb
|
210
212
|
- lib/bario/version.rb
|
211
213
|
- lib/bario/web.rb
|
212
214
|
- lib/bario/web/public/robots.txt
|
@@ -234,8 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
236
|
- !ruby/object:Gem::Version
|
235
237
|
version: '0'
|
236
238
|
requirements: []
|
237
|
-
|
238
|
-
rubygems_version: 2.6.13
|
239
|
+
rubygems_version: 3.1.2
|
239
240
|
signing_key:
|
240
241
|
specification_version: 4
|
241
242
|
summary: Redis based nested progress bars
|