pears 0.1.2 → 0.2.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 +6 -8
- data/lib/pears/provider/base.rb +7 -3
- data/lib/pears/provider/builder.rb +15 -1
- data/lib/pears/provider/rails_config.rb +23 -0
- data/lib/pears/provider/remote_file.rb +2 -1
- data/lib/pears/provider.rb +1 -0
- data/lib/pears/version.rb +1 -1
- data/lib/pears.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7abec7354b67f08e28107cfb1fb8c94864d7ac207ff1b7fd64fc916768195544
|
|
4
|
+
data.tar.gz: ecd79dde81cd9964d287aaa12e42bbc6c449403b4eded1f5a23d1d886d735066
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3e5da3506aa2ae5fd633a8ef815b109bf317d6c9338a4730b0f3d304dce946158cac778e8cdb67c510c9ff02a69dec318f2c35eb6307f9ede9367fcc716cfb2d
|
|
7
|
+
data.tar.gz: edf8f9e02d5c04de51c97400bcf666c362e92a5ce0b91ad8d6820360c0e111e8b83b5d9f155d75e473bf546acb7af8aa945a54cefe8e4f5fd89fb18faf8e0bab
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
pears (0.
|
|
4
|
+
pears (0.1.3)
|
|
5
5
|
activesupport
|
|
6
6
|
dry-configurable (>= 0.13.0)
|
|
7
7
|
redis
|
|
@@ -9,25 +9,24 @@ PATH
|
|
|
9
9
|
GEM
|
|
10
10
|
remote: https://rubygems.org/
|
|
11
11
|
specs:
|
|
12
|
-
activesupport (
|
|
12
|
+
activesupport (7.0.2.3)
|
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
14
14
|
i18n (>= 1.6, < 2)
|
|
15
15
|
minitest (>= 5.1)
|
|
16
16
|
tzinfo (~> 2.0)
|
|
17
|
-
zeitwerk (~> 2.3)
|
|
18
17
|
byebug (11.1.3)
|
|
19
|
-
concurrent-ruby (1.1.
|
|
18
|
+
concurrent-ruby (1.1.10)
|
|
20
19
|
diff-lcs (1.4.4)
|
|
21
|
-
dry-configurable (0.
|
|
20
|
+
dry-configurable (0.14.0)
|
|
22
21
|
concurrent-ruby (~> 1.0)
|
|
23
22
|
dry-core (~> 0.6)
|
|
24
23
|
dry-core (0.7.1)
|
|
25
24
|
concurrent-ruby (~> 1.0)
|
|
26
|
-
i18n (1.
|
|
25
|
+
i18n (1.10.0)
|
|
27
26
|
concurrent-ruby (~> 1.0)
|
|
28
27
|
minitest (5.15.0)
|
|
29
28
|
rake (13.0.6)
|
|
30
|
-
redis (4.
|
|
29
|
+
redis (4.6.0)
|
|
31
30
|
rspec (3.10.0)
|
|
32
31
|
rspec-core (~> 3.10.0)
|
|
33
32
|
rspec-expectations (~> 3.10.0)
|
|
@@ -45,7 +44,6 @@ GEM
|
|
|
45
44
|
rspec-support (3.10.3)
|
|
46
45
|
tzinfo (2.0.4)
|
|
47
46
|
concurrent-ruby (~> 1.0)
|
|
48
|
-
zeitwerk (2.5.1)
|
|
49
47
|
|
|
50
48
|
PLATFORMS
|
|
51
49
|
arm64-darwin-20
|
data/lib/pears/provider/base.rb
CHANGED
|
@@ -21,9 +21,13 @@ module Pears
|
|
|
21
21
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
|
-
def parse_yaml(
|
|
25
|
-
yaml_data = YAML.load(
|
|
26
|
-
|
|
24
|
+
def parse_yaml(yaml_string)
|
|
25
|
+
yaml_data = YAML.load(yaml_string)
|
|
26
|
+
|
|
27
|
+
unless yaml_data.respond_to? :with_indifferent_access
|
|
28
|
+
raise Pears::InvalidProviderData
|
|
29
|
+
end
|
|
30
|
+
|
|
27
31
|
yaml_data.with_indifferent_access
|
|
28
32
|
rescue Psych::SyntaxError => e
|
|
29
33
|
logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
|
|
@@ -7,13 +7,23 @@ module Pears
|
|
|
7
7
|
def self.enable_provider(provider, yielder: false)
|
|
8
8
|
method_name = provider.name.split('::').last.underscore.to_sym
|
|
9
9
|
if yielder
|
|
10
|
-
define_method(method_name) do |*args, &block|
|
|
10
|
+
define_method(method_name) do |*args, **opts, &block|
|
|
11
|
+
# Skip if Rails environment should not use this perticular setting
|
|
12
|
+
if defined?(Rails)
|
|
13
|
+
return if Array.wrap(opts[:skip_env]).include?(Rails.env.to_sym)
|
|
14
|
+
end
|
|
15
|
+
|
|
11
16
|
pr = provider.new(builder: self, &block)
|
|
12
17
|
push pr
|
|
13
18
|
pr
|
|
14
19
|
end
|
|
15
20
|
else
|
|
16
21
|
define_method(method_name) do |*args, **opts, &block|
|
|
22
|
+
# Skip if Rails environment should not use this perticular setting
|
|
23
|
+
if defined?(Rails)
|
|
24
|
+
return if Array.wrap(opts[:skip_env]).include?(Rails.env.to_sym)
|
|
25
|
+
end
|
|
26
|
+
|
|
17
27
|
pr = provider.new(*args, **opts, &block)
|
|
18
28
|
push pr
|
|
19
29
|
pr
|
|
@@ -26,6 +36,10 @@ module Pears
|
|
|
26
36
|
enable_provider RemoteFile
|
|
27
37
|
enable_provider Subscription, yielder: true
|
|
28
38
|
|
|
39
|
+
if defined?(Rails) == "constant"
|
|
40
|
+
enable_provider RailsConfig
|
|
41
|
+
end
|
|
42
|
+
|
|
29
43
|
delegate :name, to: :subject
|
|
30
44
|
|
|
31
45
|
def initialize(subject)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
|
3
|
+
|
|
4
|
+
module Pears
|
|
5
|
+
module Provider
|
|
6
|
+
# Used for loading simple YAML file locally.
|
|
7
|
+
class RailsConfig < Base
|
|
8
|
+
def initialize(*path_parts, on_failure: :raise)
|
|
9
|
+
file = path_parts.pop
|
|
10
|
+
file_path = Rails.root.join('config', *path_parts, "#{file}.yml")
|
|
11
|
+
yaml_data = File.read(file_path)
|
|
12
|
+
@data = parse_yaml(yaml_data)
|
|
13
|
+
rescue Errno::ENOENT,
|
|
14
|
+
Pears::InvalidProviderData => error
|
|
15
|
+
if on_failure == :null
|
|
16
|
+
@data = {}
|
|
17
|
+
else
|
|
18
|
+
raise error
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/pears/provider.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require_relative "provider/base"
|
|
2
2
|
require_relative "provider/local_file"
|
|
3
3
|
require_relative "provider/remote_file"
|
|
4
|
+
require_relative "provider/rails_config"
|
|
4
5
|
require_relative "provider/subscription"
|
|
5
6
|
require_relative "provider/env"
|
|
6
7
|
require_relative "provider/loco"
|
data/lib/pears/version.rb
CHANGED
data/lib/pears.rb
CHANGED
|
@@ -16,9 +16,10 @@ module Pears
|
|
|
16
16
|
|
|
17
17
|
# This is the main way of locating a subject.
|
|
18
18
|
def self.subject(name)
|
|
19
|
+
subjects
|
|
19
20
|
Subject.new(name).tap do |subject|
|
|
20
21
|
builder = Provider::Builder.new(subject)
|
|
21
|
-
yield(builder)
|
|
22
|
+
@subjects << yield(builder)
|
|
22
23
|
end
|
|
23
24
|
end
|
|
24
25
|
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.2.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-03-
|
|
11
|
+
date: 2022-03-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-configurable
|
|
@@ -92,6 +92,7 @@ files:
|
|
|
92
92
|
- lib/pears/provider/hash.rb
|
|
93
93
|
- lib/pears/provider/local_file.rb
|
|
94
94
|
- lib/pears/provider/loco.rb
|
|
95
|
+
- lib/pears/provider/rails_config.rb
|
|
95
96
|
- lib/pears/provider/remote_file.rb
|
|
96
97
|
- lib/pears/provider/subscription.rb
|
|
97
98
|
- lib/pears/subject.rb
|