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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e5f72a743be10db15756a0223ec43b75ca764aeeec8271999359324b8df5556
4
- data.tar.gz: ec6603a5cace923b98ea1f80f8f4876c94d94118f4cd6975f63eae3e75fb5991
3
+ metadata.gz: 7abec7354b67f08e28107cfb1fb8c94864d7ac207ff1b7fd64fc916768195544
4
+ data.tar.gz: ecd79dde81cd9964d287aaa12e42bbc6c449403b4eded1f5a23d1d886d735066
5
5
  SHA512:
6
- metadata.gz: 7f78200980505f2f354d87890f02b4ab094e36c1da304c387b8352595a7a9f2e9e74f145f1bc8da3c320f37f56a764c43068a75c6cd6b6e42511d4804acccf66
7
- data.tar.gz: 60259e0a407ff67e0a3301825de82fb45b3f87a6afd08d9e5c2de34743bbe092e3e86a38bd50b99c6cae9ae81e4aab96d9951f21f7091d17febc3fb17ae14387
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.0.11)
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 (6.1.4.3)
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.9)
18
+ concurrent-ruby (1.1.10)
20
19
  diff-lcs (1.4.4)
21
- dry-configurable (0.13.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.8.11)
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.5.1)
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
@@ -21,9 +21,13 @@ module Pears
21
21
 
22
22
  private
23
23
 
24
- def parse_yaml(yaml_data)
25
- yaml_data = YAML.load(yaml_data)
26
- raise Pears::InvalidProviderData unless yaml_data.is_a? Hash
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
@@ -12,7 +12,8 @@ module Pears
12
12
  InvalidProviderData,
13
13
  Errno::ECONNREFUSED,
14
14
  Errno::EHOSTUNREACH,
15
- Errno::EADDRNOTAVAIL => e
15
+ Errno::EADDRNOTAVAIL,
16
+ Net::OpenTimeout => e
16
17
  if on_failure == :null
17
18
  @data = {}
18
19
  else
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pears
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
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.1.2
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-17 00:00:00.000000000 Z
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