bario 0.1.0 → 0.1.1

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