app_config_for 0.0.3 → 0.0.4.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
2
  SHA256:
3
- metadata.gz: fffc63810437848a24a9e6f1d8cf02081060a0fe2d348bd8e7bb14c5917ca2ec
4
- data.tar.gz: 76c6787ebe99d673214fdd9e9bba7f4e0ff003c18308214444bdd48e38736023
3
+ metadata.gz: 228991a28438bec90c4aa9f06b33850a5ee4034b01a7ec87a33c90fa77ace37d
4
+ data.tar.gz: eed01754e58c59c3ea8d58c23e809f8d9c3ae1b6fe5a3b24958a1a173f01a87c
5
5
  SHA512:
6
- metadata.gz: 142a9d57a16dcb0951ae39da4103138dd9b8d6b9d53b52bf4776d4ae4701290f0d00b6b36e773ac1af95d69bc150dade305bf43353a49a1072e715253c6fd034
7
- data.tar.gz: '0499b786cade8df74b4adc315f231fcbb3ef1c7f0b91cd74bdb430d8d779451edd4dfba7fd509cbe2e8af2daec00f6ad7ad1b1a78b287211016eda55bfb623d3'
6
+ metadata.gz: d05a93814a9b8162890151e89f2e83e99f29c58478e371aeef49c63c29713a01d1c86ab3b4a28ee320d2eb639dd51879d107dd820c9f173c3bae958c626396b9
7
+ data.tar.gz: b9dc3d8224b2e0c05167da273faf7df940c1397022d22768af8cce85101de32993a56cc2e13bca5b2d8cb656e7885251a962486856388ad1871be9163784816e
@@ -0,0 +1,16 @@
1
+ module AppConfigFor
2
+
3
+ def self.gem_version
4
+ Gem::Version.new(VERSION::STRING)
5
+ end
6
+
7
+ module VERSION
8
+ MAJOR = 0
9
+ MINOR = 0
10
+ TINY = 4
11
+ PRE = 1
12
+
13
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
14
+ end
15
+
16
+ end
@@ -0,0 +1,45 @@
1
+ require 'active_support/core_ext/string/inflections'
2
+ name = File.basename(__dir__).classify
3
+ STDERR.puts "#{name}: Warning! Outdated version of ActiveSupport active! To avoid security issues, please upgrade your version of ActiveSupport to at least 6.1.4."
4
+ if ActiveSupport.gem_version < Gem::Version.new('6.1.0')
5
+ puts "#{name}: Loading legacy support for ActiveSupport version #{ActiveSupport.gem_version}."
6
+
7
+ # Quick and dirty backport. This won't be here long. Just enough to support AppConfigFor during some legacy upgrades.
8
+ require "active_support/string_inquirer"
9
+ require "erb"
10
+ require "yaml"
11
+
12
+ module ActiveSupport
13
+ class EnvironmentInquirer < StringInquirer
14
+
15
+ Environments = %w(development test production)
16
+
17
+ def initialize(env)
18
+ super(env)
19
+ Environments.each { |e| instance_variable_set(:"@#{e}", env == e) }
20
+ end
21
+
22
+ Environments.each { |e| define_method("#{e}?") { instance_variable_get("@#{e}") }}
23
+ end
24
+
25
+ class ConfigurationFile
26
+ def initialize(file_name)
27
+ @file_name = file_name
28
+ @config = File.read(file_name)
29
+ warn(file_name + ' contains invisible non-breaking spaces.') if @config.match?("\u00A0")
30
+ end
31
+
32
+ def self.parse(file_name)
33
+ new(file_name).parse
34
+ end
35
+
36
+ def parse
37
+ YAML.load(ERB.new(@config).result) || {}
38
+ rescue Psych::SyntaxError => e
39
+ raise "YAML syntax error occurred while parsing #{@file_name}. Error: #{e.message}"
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
+ require_relative "gem_version"
2
3
 
3
4
  module AppConfigFor
4
- VERSION = "0.0.3"
5
+
6
+ def self.version
7
+ gem_version
8
+ end
9
+
5
10
  end
@@ -2,11 +2,18 @@
2
2
 
3
3
  require_relative "app_config_for/version"
4
4
  require_relative "app_config_for/errors"
5
- require 'active_support/environment_inquirer'
6
- require 'active_support/configuration_file'
5
+
6
+ require 'active_support/gem_version'
7
+ if ActiveSupport.gem_version >= Gem::Version.new('6.1.4')
8
+ require 'active_support/environment_inquirer'
9
+ require 'active_support/configuration_file'
10
+ else
11
+ require_relative 'app_config_for/legacy_support'
12
+ end
13
+
7
14
  require 'active_support/core_ext/object/blank'
8
15
  require 'active_support/core_ext/string/inflections'
9
- require "active_support/core_ext/hash/indifferent_access"
16
+ require 'active_support/core_ext/hash/indifferent_access'
10
17
  require 'active_support/ordered_options'
11
18
  require 'active_support/core_ext/object/try'
12
19
 
@@ -23,9 +30,18 @@ module AppConfigFor
23
30
  env_prefixes(false, false).send(at_beginning ? :unshift : :push, AppConfigFor.prefix_from(prefix || self)).uniq!
24
31
  end
25
32
 
33
+ def add_config_directory(new_directory)
34
+ (additional_config_directories << Pathname.new(new_directory).expand_path).uniq!
35
+ end
36
+
37
+ def additional_config_directories
38
+ @additional_config_directories ||= []
39
+ end
40
+
26
41
  def config_directories
27
42
  directories = ['Rails'.safe_constantize&.application&.paths, try(:paths)].compact.map { |root| root["config"].existent.first }.compact
28
- directories.map! { |directory| Pathname.new(directory) }
43
+ directories.map! { |directory| Pathname.new(directory).expand_path }
44
+ directories.concat additional_config_directories
29
45
  directories.push(Pathname.getwd + 'config')
30
46
  directories.uniq
31
47
  end
@@ -39,7 +55,7 @@ module AppConfigFor
39
55
  end
40
56
 
41
57
  def config_files(name = nil)
42
- name = AppConfigFor.yml_name_from(name || self)
58
+ name = AppConfigFor.yml_name_from(name || config_name)
43
59
  config_directories.map { |directory| directory + name }
44
60
  end
45
61
 
@@ -59,17 +75,26 @@ module AppConfigFor
59
75
  config
60
76
  end
61
77
 
78
+ def config_name
79
+ @config_name ||= self
80
+ end
81
+
82
+ def config_name=(new_config_name)
83
+ @config_name = new_config_name
84
+ end
85
+
62
86
  def config_options(name = nil)
63
87
  file = name.is_a?(Pathname) ? name : config_file(name)
64
88
  ActiveSupport::ConfigurationFile.parse(file.to_s).deep_symbolize_keys
65
89
  rescue SystemCallError => exception
66
90
  raise ConfigNotFound.new(name.is_a?(Pathname) ? name : config_files(name), exception)
67
91
  rescue => exception
68
- raise LoadError.new(file, exception)
92
+ raise file ? LoadError.new(file, exception) : exception
69
93
  end
70
94
 
71
- def configured(env: nil)
72
- config_for(self, env: env)
95
+ def configured(reload = false, env: nil)
96
+ @configured = config_for(nil, env: env) if reload || @configured.nil?
97
+ @configured
73
98
  end
74
99
 
75
100
  def env(reload = false)
@@ -170,7 +195,7 @@ module AppConfigFor
170
195
 
171
196
  def progenitor_of(object, style = nil)
172
197
  style = verified_style!(style, object)
173
- command = {namespace: :namespace_of, class: :parent_of}[style]
198
+ command = {namespace: :namespace_of, class: :parent_of}[style] # Todo, deal with the other styles by doing nothing and not crashing or something.
174
199
  object && command && send(command, object).yield_self { |n| n && (n.respond_to?(:env_prefixes) ? n : progenitor_of(n)) }
175
200
  end
176
201
 
@@ -220,14 +245,20 @@ module AppConfigFor
220
245
 
221
246
  private
222
247
 
248
+ def prep_base(base)
249
+ base.add_env_prefix
250
+ gem = Gem.loaded_specs[base.name.underscore]
251
+ base.add_config_directory(gem.gem_dir + '/config') if gem
252
+ end
253
+
223
254
  def extended(base)
224
255
  # Todo: Add the ability to check the default environments directly from base if the methods don't yet exist.
225
256
  # ie: base.development? is the same as base.env.development?
226
- base.add_env_prefix
257
+ prep_base(base)
227
258
  end
228
259
 
229
260
  def included(base)
230
- base.add_env_prefix
261
+ prep_base(base)
231
262
  end
232
263
 
233
264
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_config_for
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank Hall
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-12 00:00:00.000000000 Z
11
+ date: 2022-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '7.0'
22
+ version: '8'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5.0'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '7.0'
32
+ version: '8'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +78,8 @@ files:
72
78
  - Rakefile
73
79
  - lib/app_config_for.rb
74
80
  - lib/app_config_for/errors.rb
81
+ - lib/app_config_for/gem_version.rb
82
+ - lib/app_config_for/legacy_support.rb
75
83
  - lib/app_config_for/version.rb
76
84
  - sig/app_config_for.rbs
77
85
  homepage: https://github.com/ChapterHouse/app_config_for
@@ -79,8 +87,8 @@ licenses:
79
87
  - MIT
80
88
  metadata:
81
89
  homepage_uri: https://github.com/ChapterHouse/app_config_for
82
- source_code_uri: https://github.com/ChapterHouse/app_config_for/tree/v0.0.3
83
- changelog_uri: https://github.com/ChapterHouse/app_config_for/blob/v0.0.3/CHANGELOG.md
90
+ source_code_uri: https://github.com/ChapterHouse/app_config_for/tree/v0.0.4.1
91
+ changelog_uri: https://github.com/ChapterHouse/app_config_for/blob/v0.0.4.1/CHANGELOG.md
84
92
  post_install_message:
85
93
  rdoc_options: []
86
94
  require_paths:
@@ -89,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
97
  requirements:
90
98
  - - ">="
91
99
  - !ruby/object:Gem::Version
92
- version: 2.6.0
100
+ version: 2.3.6
93
101
  required_rubygems_version: !ruby/object:Gem::Requirement
94
102
  requirements:
95
103
  - - ">="