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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fafa1b73da15e80e4b4c05fc625a090134939c62
4
- data.tar.gz: cb21ca5c529072919e78dffa9d8d10494a30fb68
2
+ SHA256:
3
+ metadata.gz: e4422efacaba8324f78fea7ae144ea17599bb071ff4f64417c2079cc9d6685bd
4
+ data.tar.gz: 76cf570ce91acc8515bd792c15f057c3e861bf06ce65db275daf19d4b9421839
5
5
  SHA512:
6
- metadata.gz: 1ae76decfe7ca7fc18f97f08c31c8bbb3a1cc73195b3321b3daca3652a4f39be0d32e96257988c80f66f717deb4e142a190df24fc9b878e169de818e7cfb0192
7
- data.tar.gz: 8d5253397711b402a7dd763a1aee1dd0fc0c81ac1c52f4d4cfc3fdb45556e680fe4df365d3780f0e852679c536e6e6a9712a5f2fb79a10f410d97f55044e6026
6
+ metadata.gz: e7b44652033ad8fe87c48608ab189ca0d0b87f3cdb5ac5d4a6767c57c3379983cd14318fb15e944efff482f22f4917e593739a7e2396a17f37e7a063fb40a80e
7
+ data.tar.gz: 1e10fe268c1d042be9bc92b2a31725d156f49cb7f7eb57c7e22cde8a2f0806bdba819186ab57bdb697e36729f25a6c2e2770f5f2ec1c17f6d0a67f701814a746
@@ -2,7 +2,7 @@ require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
4
  DisplayCopNames: true
5
- TargetRubyVersion: 2.2
5
+ TargetRubyVersion: 2.6
6
6
 
7
7
  Style/StringLiterals:
8
8
  EnforcedStyle: double_quotes
@@ -2,11 +2,9 @@ sudo: false
2
2
  language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.2.8
6
- - 2.3.5
7
- - 2.4.2
8
- - ruby-head
9
- - jruby-head
5
+ - 2.5
6
+ - 2.6
7
+
10
8
  before_install: gem install bundler -v 1.16.0
11
9
 
12
10
  services:
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Bario
2
2
 
3
3
  [![codecov](https://codecov.io/gh/ceritium/bario/branch/master/graph/badge.svg)](https://codecov.io/gh/ceritium/bario)
4
+ [![Gem Version](https://badge.fury.io/rb/bario.svg)](https://badge.fury.io/rb/bario)
5
+ [![Dependency Status](https://gemnasium.com/badges/github.com/ceritium/bario.svg)](https://gemnasium.com/github.com/ceritium/bario)
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/37f2092deca467854301/maintainability)](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:
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path("../lib", __FILE__)
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 = ["bario-demo", "bario-web"]
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", "~> 1.16"
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", "~> 10.0"
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "camel_race/web"
2
4
 
3
5
  run CamelRace::Web
@@ -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 = InternalBar[id]
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(InternalBar.find(root: true))
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 = InternalBar.create(opts)
40
+ bar = Storage.create(opts)
34
41
 
35
42
  parent = opts[:parent]
36
- parent.children.push(bar) if 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.children.delete(bar) if 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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bario
4
- VERSION = "0.1.0".freeze
4
+ VERSION = "0.1.1"
5
5
  end
@@ -52,7 +52,7 @@ module Bario
52
52
 
53
53
  post "/bars-delete/:id" do
54
54
  bar = Bario::Bar.find(params[:id])
55
- bar.delete if bar
55
+ bar&.delete
56
56
  redirect to("/")
57
57
  end
58
58
  end
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.0
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: 2017-11-26 00:00:00.000000000 Z
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: '0'
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: '0'
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: '1.16'
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: '1.16'
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: '0'
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: '0'
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: '10.0'
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: '10.0'
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
- rubyforge_project:
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