pears 0.2.0 → 0.3.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/Gemfile.lock +5 -5
- data/lib/pears/commands.rb +10 -0
- data/lib/pears/errors.rb +1 -0
- data/lib/pears/provider/base.rb +4 -0
- data/lib/pears/provider/debugger.rb +14 -0
- data/lib/pears/provider/subscription.rb +12 -4
- data/lib/pears/provider.rb +1 -0
- data/lib/pears/subject.rb +5 -2
- data/lib/pears/testing/subject.rb +24 -0
- data/lib/pears/testing.rb +32 -0
- data/lib/pears/version.rb +1 -1
- data/lib/pears.rb +7 -2
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7fc395542fa7edb5343dfc3a609289406dca92f8286b4db8c5dab540a514872
|
4
|
+
data.tar.gz: fcd9e6d1caef736a54bbb4debb3fd2a3d805d13d26e7e02f2a81df0ef6742a3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54cb6031fe170893891123588cd2bb1b2f9e4fd350a5bc9e54b081af3609c8fc80b092756dd9025ef1f497de750bb2c760e5d3c9fddcf7817da0f4898c21056b
|
7
|
+
data.tar.gz: 6ea523856f8af120dd3569c735603d5735448e6ac28a27db1f7af99236d1ca6104d6ece4142d3807a89c306533646da62877c3bd0449887909e4928f07e914e9
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pears (0.
|
4
|
+
pears (0.2.0)
|
5
5
|
activesupport
|
6
6
|
dry-configurable (>= 0.13.0)
|
7
7
|
redis
|
@@ -9,7 +9,7 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (7.0.
|
12
|
+
activesupport (7.0.3)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
14
|
i18n (>= 1.6, < 2)
|
15
15
|
minitest (>= 5.1)
|
@@ -17,16 +17,16 @@ GEM
|
|
17
17
|
byebug (11.1.3)
|
18
18
|
concurrent-ruby (1.1.10)
|
19
19
|
diff-lcs (1.4.4)
|
20
|
-
dry-configurable (0.
|
20
|
+
dry-configurable (0.15.0)
|
21
21
|
concurrent-ruby (~> 1.0)
|
22
22
|
dry-core (~> 0.6)
|
23
23
|
dry-core (0.7.1)
|
24
24
|
concurrent-ruby (~> 1.0)
|
25
25
|
i18n (1.10.0)
|
26
26
|
concurrent-ruby (~> 1.0)
|
27
|
-
minitest (5.
|
27
|
+
minitest (5.16.2)
|
28
28
|
rake (13.0.6)
|
29
|
-
redis (4.
|
29
|
+
redis (4.7.1)
|
30
30
|
rspec (3.10.0)
|
31
31
|
rspec-core (~> 3.10.0)
|
32
32
|
rspec-expectations (~> 3.10.0)
|
data/lib/pears/errors.rb
CHANGED
data/lib/pears/provider/base.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Pears
|
2
|
+
# Move this one into Pears, its really handy!
|
3
|
+
module Provider
|
4
|
+
class Debuggy < Pears::Provider::Base
|
5
|
+
def data
|
6
|
+
puts "Pears Debugger was called."
|
7
|
+
puts @data
|
8
|
+
@data
|
9
|
+
end
|
10
|
+
end
|
11
|
+
Provider::Builder.enable_provider Pears::Provider::Debuggy
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -44,16 +44,24 @@ module Pears
|
|
44
44
|
@subscription.terminate
|
45
45
|
end
|
46
46
|
|
47
|
+
def purge
|
48
|
+
unsubscribe
|
49
|
+
true
|
50
|
+
end
|
51
|
+
|
47
52
|
private
|
48
53
|
|
49
54
|
def subscribe
|
55
|
+
nth = 0
|
50
56
|
@subscription = Thread.new do
|
51
|
-
|
52
|
-
|
53
|
-
load_config
|
57
|
+
loop do
|
58
|
+
connection.subscribe(channel) do |on|
|
59
|
+
on.message { |_channel, _message| load_config }
|
54
60
|
end
|
61
|
+
|
62
|
+
nth += 1
|
63
|
+
puts "Pears connection was lost for the #{nth}th time"
|
55
64
|
end
|
56
|
-
puts "Redis connection died!"
|
57
65
|
end
|
58
66
|
end
|
59
67
|
|
data/lib/pears/provider.rb
CHANGED
data/lib/pears/subject.rb
CHANGED
@@ -3,7 +3,7 @@ require 'active_support/core_ext/hash/indifferent_access'
|
|
3
3
|
module Pears
|
4
4
|
# A subject is a collection of settings.
|
5
5
|
# You could different Pears::Subjects in your application for different parts
|
6
|
-
# of its domain. for instance: application_settings, theming or
|
6
|
+
# of its domain. for instance: application_settings, theming or translaions.
|
7
7
|
class Subject
|
8
8
|
include Enumerable
|
9
9
|
attr_reader :name
|
@@ -11,7 +11,6 @@ module Pears
|
|
11
11
|
def initialize(name, *layers)
|
12
12
|
@name = name
|
13
13
|
@layers = layers
|
14
|
-
Pears.subjects << self
|
15
14
|
end
|
16
15
|
|
17
16
|
def [](key)
|
@@ -30,6 +29,10 @@ module Pears
|
|
30
29
|
project.dig(*args)
|
31
30
|
end
|
32
31
|
|
32
|
+
def purge
|
33
|
+
@layers.each.each(&:purge)
|
34
|
+
end
|
35
|
+
|
33
36
|
def push_layer(layer)
|
34
37
|
@layers << layer
|
35
38
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Pears
|
2
|
+
module Testing
|
3
|
+
module Subject
|
4
|
+
def prepend *address, is:
|
5
|
+
@layers = @layers.unshift Pears::Provider::Hash.new(hasher(address, is: is))
|
6
|
+
end
|
7
|
+
|
8
|
+
def shift
|
9
|
+
@layers.shift
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def hasher(address, is:)
|
15
|
+
local = address.shift
|
16
|
+
if address.empty?
|
17
|
+
{ local => is }
|
18
|
+
else
|
19
|
+
{ local => hasher(address, is: is) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'pears/testing/subject'
|
2
|
+
|
3
|
+
module Pears
|
4
|
+
module Testing
|
5
|
+
def self.prepend_subject subject_name, *address, is:
|
6
|
+
subject = find_subject!(subject_name)
|
7
|
+
subject.prepend *address, is: is
|
8
|
+
begin
|
9
|
+
yield
|
10
|
+
ensure
|
11
|
+
subject.shift
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.find_subject!(name)
|
16
|
+
Pears.subjects
|
17
|
+
.find { |subject| subject.name.to_sym == name.to_sym }.tap do |sub|
|
18
|
+
unless sub.present?
|
19
|
+
raise SubjectNotfound.new(
|
20
|
+
message: "No subject with the name #{subject_name} exists."
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module Pears
|
29
|
+
class Subject
|
30
|
+
include Pears::Testing::Subject
|
31
|
+
end
|
32
|
+
end
|
data/lib/pears/version.rb
CHANGED
data/lib/pears.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative "pears/version"
|
|
4
4
|
require_relative "pears/errors"
|
5
5
|
require_relative "pears/provider"
|
6
6
|
require_relative "pears/subject"
|
7
|
+
require_relative "pears/commands"
|
7
8
|
|
8
9
|
module Pears
|
9
10
|
extend Dry::Configurable
|
@@ -16,10 +17,14 @@ module Pears
|
|
16
17
|
|
17
18
|
# This is the main way of locating a subject.
|
18
19
|
def self.subject(name)
|
19
|
-
subjects
|
20
|
+
if subjects.any? { |sub| sub.name == name }
|
21
|
+
raise Pears::Error.new("subject name #{name} is already in use.")
|
22
|
+
end
|
23
|
+
|
20
24
|
Subject.new(name).tap do |subject|
|
21
25
|
builder = Provider::Builder.new(subject)
|
22
|
-
|
26
|
+
yield(builder)
|
27
|
+
@subjects.push subject
|
23
28
|
end
|
24
29
|
end
|
25
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pears
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Kemp
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-configurable
|
@@ -84,10 +84,12 @@ files:
|
|
84
84
|
- bin/console
|
85
85
|
- bin/setup
|
86
86
|
- lib/pears.rb
|
87
|
+
- lib/pears/commands.rb
|
87
88
|
- lib/pears/errors.rb
|
88
89
|
- lib/pears/provider.rb
|
89
90
|
- lib/pears/provider/base.rb
|
90
91
|
- lib/pears/provider/builder.rb
|
92
|
+
- lib/pears/provider/debugger.rb
|
91
93
|
- lib/pears/provider/env.rb
|
92
94
|
- lib/pears/provider/hash.rb
|
93
95
|
- lib/pears/provider/local_file.rb
|
@@ -96,6 +98,8 @@ files:
|
|
96
98
|
- lib/pears/provider/remote_file.rb
|
97
99
|
- lib/pears/provider/subscription.rb
|
98
100
|
- lib/pears/subject.rb
|
101
|
+
- lib/pears/testing.rb
|
102
|
+
- lib/pears/testing/subject.rb
|
99
103
|
- lib/pears/version.rb
|
100
104
|
- pears.gemspec
|
101
105
|
homepage: https://bitbucket.org/ivaldi/rubygems-pears/src/master/
|