config-factory 0.0.9 → 0.1.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
  SHA1:
3
- metadata.gz: c44c851822d0e71704e0892c28b76f68cfed5772
4
- data.tar.gz: 6b6fc389e2b25d2b3d2344990761ccf768c0fb0a
3
+ metadata.gz: 71ac5f68f30df9052485393cdcf146484a7acd37
4
+ data.tar.gz: e5d2743640833b9cbeb9c6ee3614b5ba6b6bfd28
5
5
  SHA512:
6
- metadata.gz: f94eecfabc84b6e17d0e40538dd65dff3b299c0920acc7a5e07964552c2a521bf15e564c2c23efbf31e805d666defc7e128f8cd06981e7cb04c332e4b12de17c
7
- data.tar.gz: 517762975319826c5101bf3ba0ed599735d4ab593b3c4a8bd971a3ec36fbf62886287f3b2f4f18db58e68e7eb11a6a5eede8fb9d71f157a1e840bfac7a64ec9c
6
+ metadata.gz: f580ce87fbee29317fb3dd0445bd936b996054597309bf90b77bfeae576f76dc0db8f668b8ba649def5879c61f82e3038450694799739457e6dd2bd56e5451c0
7
+ data.tar.gz: fa49944fb3829497732cee5a131509db8a276264d9005b1c9dc9784e7de0db30d31206881f006b146311b59641c8709cc70f61a73fef00a96fe6bb874a2749d0
data/.gitignore CHANGED
@@ -1,3 +1,8 @@
1
+ # ignore IntelliJ IDEA project entirely
2
+
3
+ .idea
4
+ *.iml
5
+
1
6
  # Ruby defaults
2
7
 
3
8
  /.bundle/
@@ -23,14 +28,6 @@ mkmf.log
23
28
 
24
29
  /log/
25
30
 
26
- # IntellJ
27
-
28
- *.iml
29
- *.ipr
30
- *.iws
31
- *.ids
32
- .rakeTasks
33
-
34
31
  # Emacs
35
32
 
36
33
  *~
@@ -1,8 +1,3 @@
1
- # Disable compact style check for example.rb
2
- Style/ClassAndModuleChildren:
3
- Exclude:
4
- - 'example.rb'
5
-
6
1
  # Disable line-length check; it's too easy for the cure to be worse than the disease
7
2
  Metrics/LineLength:
8
3
  Enabled: False
@@ -11,14 +6,23 @@ Metrics/LineLength:
11
6
  Style/Documentation:
12
7
  Enabled: false
13
8
 
14
- # Allow one line around class body (Style/EmptyLines will still disallow two or more)
15
- Style/EmptyLinesAroundClassBody:
9
+ # Allow one line around class body (Layout/EmptyLines will still disallow two or more)
10
+ Layout/EmptyLinesAroundClassBody:
16
11
  Enabled: false
17
12
 
18
- # Allow one line around module body (Style/EmptyLines will still disallow two or more)
19
- Style/EmptyLinesAroundModuleBody:
13
+ # Allow one line around module body (Layout/EmptyLines will still disallow two or more)
14
+ Layout/EmptyLinesAroundModuleBody:
20
15
  Enabled: false
21
16
 
22
- # Allow one line around block body (Style/EmptyLines will still disallow two or more)
23
- Style/EmptyLinesAroundBlockBody:
17
+ # Allow one line around block body (Layout/EmptyLines will still disallow two or more)
18
+ Layout/EmptyLinesAroundBlockBody:
24
19
  Enabled: false
20
+
21
+ # Disable some style checks for sample code
22
+ Style/ClassAndModuleChildren:
23
+ Exclude:
24
+ - 'example.rb'
25
+
26
+ Style/MixinUsage:
27
+ Exclude:
28
+ - 'example.rb'
@@ -1 +1 @@
1
- 2.2.3
1
+ 2.4.1
data/CHANGES.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.1.10 (2 January 2018)
2
+
3
+ - Update to Ruby 2.4.1
4
+ - Update to RuboCop 0.52
5
+
1
6
  ## 0.0.9 (9 August 2016)
2
7
 
3
8
  - Add `AbstractFactory#env_name` and inject the environment name, if available, on construction,
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 The Regents of the University of California
3
+ Copyright (c) 2018 The Regents of the University of California
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # ------------------------------------------------------------
2
4
  # RSpec
3
5
 
@@ -8,7 +10,7 @@ namespace :spec do
8
10
 
9
11
  desc 'Run all unit tests'
10
12
  RSpec::Core::RakeTask.new(:unit) do |task|
11
- task.rspec_opts = %w(--color --format documentation --order default)
13
+ task.rspec_opts = %w[--color --format documentation --order default]
12
14
  task.pattern = 'unit/**/*_spec.rb'
13
15
  end
14
16
 
@@ -38,7 +40,7 @@ RuboCop::RakeTask.new
38
40
 
39
41
  desc 'List TODOs (from spec/todo.rb)'
40
42
  RSpec::Core::RakeTask.new(:todo) do |task|
41
- task.rspec_opts = %w(--color --format documentation --order default)
43
+ task.rspec_opts = %w[--color --format documentation --order default]
42
44
  task.pattern = 'todo.rb'
43
45
  end
44
46
 
@@ -46,4 +48,4 @@ end
46
48
  # Defaults
47
49
 
48
50
  desc 'Run unit tests, check test coverage, run acceptance tests, check code style'
49
- task default: [:coverage, :rubocop]
51
+ task default: %i[coverage rubocop]
@@ -1,4 +1,6 @@
1
- # coding: utf-8
1
+
2
+ # frozen_string_literal: true
3
+
2
4
  lib = File.expand_path('../lib', __FILE__)
3
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
6
 
@@ -15,7 +17,7 @@ Gem::Specification.new do |spec|
15
17
  spec.license = 'MIT'
16
18
 
17
19
  origin = `git config --get remote.origin.url`.chomp
18
- origin_uri = origin.start_with?('http') ? URI(origin) : URI(origin.sub('git@github.com:', 'https://github.com/'))
20
+ origin_uri = origin.start_with?('http') ? URI(origin) : URI(origin.gsub(%r{git@([^:]+)(.com|.org)[^\/]+}, 'http://\1\2'))
19
21
  spec.homepage = URI::HTTP.build(host: origin_uri.host, path: origin_uri.path.chomp('.git')).to_s
20
22
 
21
23
  spec.files = `git ls-files -z`.split("\x0")
@@ -27,7 +29,7 @@ Gem::Specification.new do |spec|
27
29
  spec.add_development_dependency 'bundler', '~> 1.7'
28
30
  spec.add_development_dependency 'rake', '~> 10.4'
29
31
  spec.add_development_dependency 'rspec', '~> 3.2'
32
+ spec.add_development_dependency 'rubocop', '~> 0.52'
30
33
  spec.add_development_dependency 'simplecov', '~> 0.9.2'
31
34
  spec.add_development_dependency 'simplecov-console', '~> 0.2.0'
32
- spec.add_development_dependency 'rubocop', '~> 0.35.1'
33
35
  end
data/example.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'config/factory'
4
5
  include Config::Factory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Config
2
4
  module Factory
3
5
  Dir.glob(File.expand_path('../factory/*.rb', __FILE__)).sort.each(&method(:require))
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'config/factory/environments'
2
4
 
3
5
  module Config
@@ -32,7 +34,7 @@ module Config
32
34
 
33
35
  def for_environment(env, config_name)
34
36
  arg_hash = env.args_for(config_name)
35
- fail ArgumentError, "no #{self} arguments found for config #{config_name} in environment #{env}" unless arg_hash
37
+ raise ArgumentError, "no #{self} arguments found for config #{config_name} in environment #{env}" unless arg_hash
36
38
  build_from(arg_hash, nil, env.name)
37
39
  end
38
40
 
@@ -42,13 +44,13 @@ module Config
42
44
  end
43
45
 
44
46
  def build_from(arg_hash, section_name = nil, env_name = nil)
45
- fail ArgumentError, "nil argument hash passed to #{self}.build_from" unless arg_hash
47
+ raise ArgumentError, "nil argument hash passed to #{self}.build_from" unless arg_hash
46
48
  args = deep_symbolize_keys(arg_hash)
47
49
  args = args[section_name] if section_name
48
50
  impl_class = find_impl_class(args)
49
51
  begin
50
52
  return create_impl(impl_class, args, env_name)
51
- rescue => e
53
+ rescue StandardError => e
52
54
  raise ArgumentError, "Error instantiating #{impl_class} with arguments #{args}: #{e}"
53
55
  end
54
56
  end
@@ -65,10 +67,10 @@ module Config
65
67
  end
66
68
 
67
69
  def impl_for_key(key_sym, args)
68
- fail ArgumentError, "implementation key #{key_sym} not found in argument hash #{args || 'nil'}" unless args && args.key?(key_sym)
70
+ raise ArgumentError, "implementation key #{key_sym} not found in argument hash #{args || 'nil'}" unless args&.key?(key_sym)
69
71
  key_value = args.delete(key_sym)
70
72
  impl_class = impls_by_key[key_value]
71
- fail ArgumentError, "No #{name} implementation found for #{key_sym}: #{key_value}" unless impl_class
73
+ raise ArgumentError, "No #{name} implementation found for #{key_sym}: #{key_value}" unless impl_class
72
74
  impl_class
73
75
  end
74
76
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Config
2
4
  module Factory
3
5
  class Environment
@@ -17,7 +19,7 @@ module Config
17
19
 
18
20
  def self.load_file(path)
19
21
  hash = YAML.load_file(path)
20
- fail IOError, "Unable to load YAML file #{path}" unless hash && hash.is_a?(Hash)
22
+ raise IOError, "Unable to load YAML file #{path}" unless hash && hash.is_a?(Hash)
21
23
  load_hash(hash)
22
24
  end
23
25
 
@@ -32,12 +34,12 @@ module Config
32
34
  private
33
35
 
34
36
  def name=(v)
35
- fail ArgumentError, "Environment name #{v} must be a symbol" unless v && v.is_a?(Symbol)
37
+ raise ArgumentError, "Environment name #{v} must be a symbol" unless v && v.is_a?(Symbol)
36
38
  @name = v
37
39
  end
38
40
 
39
41
  def configs=(v)
40
- fail ArgumentError, "Environment configs #{v} must be a hash" unless v && v.is_a?(Hash)
42
+ raise ArgumentError, "Environment configs #{v} must be a hash" unless v && v.is_a?(Hash)
41
43
  @configs = v
42
44
  end
43
45
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'config/factory/environment'
3
5
 
@@ -5,12 +7,12 @@ module Config
5
7
  module Factory
6
8
  module Environments
7
9
  DEFAULT_ENVIRONMENT = :production
8
- STANDARD_ENVIRONMENTS = [:defaults, :development, :test, :stage, :staging, :production].freeze
10
+ STANDARD_ENVIRONMENTS = %i[defaults development test stage staging production].freeze
9
11
  STANDARD_ENVIRONMENTS_NOT_FOUND = "No standard environment tags (#{STANDARD_ENVIRONMENTS.join(', ')}) found; is this really a multiple-environment configuration?"
10
12
 
11
13
  def self.load_file(path)
12
14
  hash = YAML.load_file(path)
13
- fail IOError, "Unable to load YAML file #{path}" unless hash && hash.is_a?(Hash)
15
+ raise IOError, "Unable to load YAML file #{path}" unless hash && hash.is_a?(Hash)
14
16
  load_hash(hash)
15
17
  end
16
18
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'logger'
2
4
 
3
5
  module Config
@@ -20,8 +22,6 @@ module Config
20
22
  @log = new_logger(logdev: value)
21
23
  end
22
24
 
23
- private
24
-
25
25
  def self.new_logger(logdev:, level: Logger::DEBUG, shift_age: 10, shift_size: 1024 * 1024)
26
26
  logger = Logger.new(logdev, shift_age, shift_size)
27
27
  logger.level = level
@@ -30,6 +30,7 @@ module Config
30
30
  end
31
31
  logger
32
32
  end
33
+ private_class_method :new_logger
33
34
 
34
35
  end
35
36
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Config
2
4
  module Factory
3
5
  # The name of this gem
4
6
  NAME = 'config-factory'
5
7
 
6
8
  # The version of this gem
7
- VERSION = '0.0.9'
9
+ VERSION = '0.1.0'
8
10
 
9
11
  # The copyright notice for this gem
10
- COPYRIGHT = 'Copyright (c) 2016 The Regents of the University of California'
12
+ COPYRIGHT = 'Copyright (c) 2018 The Regents of the University of California'
11
13
  end
12
14
  end
@@ -1,5 +1,8 @@
1
1
  inherit_from: ../.rubocop.yml
2
2
 
3
+ Metrics/BlockLength:
4
+ Enabled: false
5
+
3
6
  Metrics/MethodLength:
4
7
  Enabled: false
5
8
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # ------------------------------------------------------------
2
4
  # SimpleCov setup
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require_relative 'fixtures'
3
5
 
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
4
+ require 'tmpdir'
2
5
  require_relative 'fixtures'
3
6
 
4
7
  module Config
@@ -18,7 +21,7 @@ module Config
18
21
  it 'registers the configurations' do
19
22
  yaml_hash = YAML.load_file('spec/data/single-environment.yml')
20
23
  env = Environment.new(name: :test, configs: yaml_hash)
21
- %w(db source index).each do |key|
24
+ %w[db source index].each do |key|
22
25
  expect(env.args_for(key)).to eq(yaml_hash[key])
23
26
  end
24
27
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require_relative 'fixtures'
3
5
 
@@ -8,7 +10,7 @@ module Config
8
10
  it 'loads a multi-environment config file' do
9
11
  envs = Environments.load_file('spec/data/multiple-environments.yml')
10
12
  expect(envs).to be_a(Hash)
11
- expected = [:defaults, :development, :test, :production]
13
+ expected = %i[defaults development test production]
12
14
  expect(envs.size).to eq(expected.size)
13
15
  expected.each do |env_name|
14
16
  env = envs[env_name]
@@ -67,7 +69,7 @@ module Config
67
69
  it 'reads a standard ActiveRecord DB config' do
68
70
  envs = Environments.load_file('spec/data/db-config.yml')
69
71
  expect(envs).to be_a(Hash)
70
- expected = [:development, :test, :production]
72
+ expected = %i[development test production]
71
73
  expect(envs.size).to eq(expected.size)
72
74
  expected.each do |env_name|
73
75
  env = envs[env_name]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'config/factory'
2
4
  require 'uri'
3
5
 
@@ -61,7 +63,7 @@ class XMLConfig < PersistenceConfig
61
63
  attr_reader :connection_info
62
64
 
63
65
  can_build_if do |config|
64
- config[:path] && config[:path].end_with?('.xml')
66
+ config[:path]&.end_with?('.xml')
65
67
  end
66
68
 
67
69
  def initialize(connection_info)
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
4
+ require 'time'
2
5
 
3
6
  module Config
4
7
  module Factory
@@ -12,7 +15,7 @@ module Config
12
15
  logged = out.string
13
16
  expect(logged).to include(msg)
14
17
  timestamp_str = logged.split[0]
15
- timestamp = DateTime.parse(timestamp_str)
18
+ timestamp = Time.parse(timestamp_str)
16
19
  expect(timestamp.to_date).to eq(Time.now.utc.to_date)
17
20
  ensure
18
21
  Factory.log_device = $stdout
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config-factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Moles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-09 00:00:00.000000000 Z
11
+ date: 2018-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,47 +53,47 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: simplecov
56
+ name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.9.2
61
+ version: '0.52'
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.9.2
68
+ version: '0.52'
69
69
  - !ruby/object:Gem::Dependency
70
- name: simplecov-console
70
+ name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.0
75
+ version: 0.9.2
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.0
82
+ version: 0.9.2
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: simplecov-console
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.35.1
89
+ version: 0.2.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.35.1
96
+ version: 0.2.0
97
97
  description: A gem for creating configuration classes using the Abstract Factory pattern,
98
98
  with run-time configuration provided by hashes or YAML files.
99
99
  email:
@@ -130,7 +130,7 @@ files:
130
130
  - spec/unit/config/factory/environments_spec.rb
131
131
  - spec/unit/config/factory/fixtures.rb
132
132
  - spec/unit/config/factory/log_spec.rb
133
- homepage: http://github.com/dmolesUC3/config-factory
133
+ homepage: http://github.com/config-factory
134
134
  licenses:
135
135
  - MIT
136
136
  metadata: {}
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  requirements: []
152
152
  rubyforge_project:
153
- rubygems_version: 2.4.5.1
153
+ rubygems_version: 2.6.12
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: A gem for creating configuration classes using the Abstract Factory pattern.
@@ -166,4 +166,3 @@ test_files:
166
166
  - spec/unit/config/factory/environments_spec.rb
167
167
  - spec/unit/config/factory/fixtures.rb
168
168
  - spec/unit/config/factory/log_spec.rb
169
- has_rdoc: