quandl-config 0.1.0 → 1.0.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: 9f99d2c151b092438f654afcdb16e59ad4f67522
4
- data.tar.gz: a5e7c655ff56638c343113fb6619995e589ef0e5
3
+ metadata.gz: 2da0e09d1f79ff22ae924363dd6217c0d1acc022
4
+ data.tar.gz: f0a48598abc63ff78a302876f9ce78026b55293f
5
5
  SHA512:
6
- metadata.gz: e734ff03977f94c1302477277be280834315bfcf85960c0ef596c8bff09260558508c3bed7edd315ccc8fd09bac840d33eafb5a558d6791488f577ea5a946330
7
- data.tar.gz: c8f1487d99ab0148a215d25b35f811e0b383e36c164777ec3c20b793d4a2827252c7f728b5e4c469f77a9083c60af8f986d2f756523a111b3dd22f08479b574a
6
+ metadata.gz: 07f8ef1cd37e9f57a3271e048f437a2b89b96d48cdaeefdd4fff7fbddcd6ffc8f69ebec67b1e554c2102a9250fcd57ac50acf869039c8bf9c7561a231b8635b4
7
+ data.tar.gz: ad5d13efd7344d4a662feb064850d3631257d1d33c889659eec1ef4a931cb6b293a4a54f089001fa2d0919eb7f52073073c84b553095cf150efd782596e4e6d9
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Quandl::Config
1
+ # Quandl::Config [![Build Status](https://travis-ci.org/quandl/quandl-config.svg?branch=master)](https://travis-ci.org/quandl/quandl-config)
2
2
 
3
3
  This gem allows you to quickly convert YML files into a `Config` object where the attributes can be accessed using dot, hash symbol or hash string notation.
4
4
 
@@ -1,51 +1,3 @@
1
- require 'ostruct'
2
- require 'yaml'
3
- require 'active_support/inflector'
4
- require 'pathname'
5
-
1
+ require_relative 'config/config'
6
2
  require_relative 'config/project_root'
7
3
  require_relative 'config/configurable'
8
-
9
- module Quandl
10
- class Config < ::OpenStruct
11
- # Optimize loading of configs multiple times by keeping a hash of already loaded configs.
12
- def self.new(filename, options = {})
13
- @_registered_configs ||= {}
14
- return @_registered_configs[filename] if @_registered_configs.key?(filename)
15
- @_registered_configs[filename] = super
16
- end
17
-
18
- def self.clear_internal_cache
19
- @_registered_configs = {}
20
- end
21
-
22
- def initialize(file_name, options = {})
23
- @_root = options.delete(:root_path)
24
- @_environment = options.delete(:environment)
25
-
26
- super(read_config(file_name))
27
- end
28
-
29
- def configurable_attributes
30
- setters_and_getters = methods - self.class.instance_methods
31
- getters = setters_and_getters.reject { |method| method =~ /=$/ }
32
- getters
33
- end
34
-
35
- private
36
-
37
- def read_config(file_name)
38
- raw_config = File.read(Pathname.new(project_root).join('config', "#{file_name}.yml"))
39
- erb_config = ERB.new(raw_config).result
40
- YAML.load(erb_config)[project_environment]
41
- end
42
-
43
- def project_root
44
- @_root ||= defined?(Rails) ? ::Rails.root : ProjectRoot.root
45
- end
46
-
47
- def project_environment
48
- @_environment ||= defined?(Rails) ? ::Rails.env : (ENV['RAILS_ENV'] || ENV['RAKE_ENV'] || ENV['QUANDL_ENV'] || 'default')
49
- end
50
- end
51
- end
@@ -0,0 +1,48 @@
1
+ require 'ostruct'
2
+ require 'yaml'
3
+ require 'pathname'
4
+
5
+ module Quandl
6
+ class Config < ::OpenStruct
7
+ # Optimize loading of configs multiple times by keeping a hash of already loaded configs.
8
+ def self.new(filename, options = {})
9
+ @_registered_configs ||= {}
10
+ return @_registered_configs[filename] if @_registered_configs.key?(filename)
11
+ @_registered_configs[filename] = super
12
+ end
13
+
14
+ def self.clear_internal_cache
15
+ @_registered_configs = {}
16
+ end
17
+
18
+ def initialize(file_name, options = {})
19
+ @_root = options.delete(:root_path)
20
+ @_environment = options.delete(:environment)
21
+
22
+ super(read_config(file_name))
23
+ end
24
+
25
+ def configurable_attributes
26
+ setters_and_getters = methods - self.class.instance_methods
27
+ setters_and_getters += self.table.keys
28
+ getters = setters_and_getters.reject { |method| method =~ /=$/ }
29
+ getters.uniq
30
+ end
31
+
32
+ private
33
+
34
+ def read_config(file_name)
35
+ raw_config = File.read(Pathname.new(project_root).join('config', "#{file_name}.yml"))
36
+ erb_config = ERB.new(raw_config).result
37
+ YAML.load(erb_config)[project_environment]
38
+ end
39
+
40
+ def project_root
41
+ @_root ||= defined?(Rails) ? ::Rails.root : ProjectRoot.root
42
+ end
43
+
44
+ def project_environment
45
+ @_environment ||= defined?(Rails) ? ::Rails.env : (ENV['RAILS_ENV'] || ENV['RAKE_ENV'] || ENV['QUANDL_ENV'] || 'default')
46
+ end
47
+ end
48
+ end
@@ -1,7 +1,9 @@
1
+ require 'active_support/inflector'
2
+
1
3
  module Quandl
2
4
  module Configurable
3
5
  def configuration
4
- @configuration ||= Config.new(file_name, configuration_options)
6
+ @configuration ||= Quandl::Config.new(file_name, configuration_options)
5
7
  end
6
8
 
7
9
  private
@@ -1,5 +1,5 @@
1
1
  module Quandl
2
2
  module Configurable
3
- VERSION = '0.1.0'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
@@ -1,19 +1,27 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Quandl::Config do
4
+ subject(:configuration) { Quandl::Config.new('fake') }
5
+
4
6
  describe '.initialize' do
5
7
  it 'generates a Config class, evaluating ERB' do
6
- configuration = Quandl::Config.new('fake')
8
+ expect(configuration['notifiers']['ci']['channel']).to eq('#development')
9
+ end
10
+ end
7
11
 
12
+ describe 'accessing values' do
13
+ it 'can access values as methods' do
8
14
  expect(configuration['notifiers']['ci']['channel']).to eq('#development')
9
15
  end
16
+
17
+ it 'can access values as hash table' do
18
+ expect(configuration.notifiers['ci']['channel']).to eq('#development')
19
+ end
10
20
  end
11
21
 
12
22
  describe '#configurable_attributes' do
13
23
  it 'provides a list of configurable attributes' do
14
- configuration = Quandl::Config.new('fake')
15
-
16
- expect(configuration.configurable_attributes).to eq([:webhook_url, :notifiers])
24
+ expect(configuration.configurable_attributes).to match_array([:webhook_url, :notifiers])
17
25
  end
18
26
  end
19
27
  end
@@ -1,2 +1,3 @@
1
+ require 'tmpdir'
1
2
  require 'quandl/config'
2
3
  require 'fixtures/dummy_rails_app/application'
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quandl-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Matthew Basset
7
8
  - Najwa Azer
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-08-24 00:00:00.000000000 Z
12
+ date: 2017-03-24 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activesupport
@@ -26,62 +27,6 @@ dependencies:
26
27
  version: '0'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.6'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.6'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec-nc
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: guard
85
30
  requirement: !ruby/object:Gem::Requirement
86
31
  requirements:
87
32
  - - ">="
@@ -95,35 +40,7 @@ dependencies:
95
40
  - !ruby/object:Gem::Version
96
41
  version: '0'
97
42
  - !ruby/object:Gem::Dependency
98
- name: guard-rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: pry
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: pry-remote
43
+ name: rake
127
44
  requirement: !ruby/object:Gem::Requirement
128
45
  requirements:
129
46
  - - ">="
@@ -137,7 +54,7 @@ dependencies:
137
54
  - !ruby/object:Gem::Version
138
55
  version: '0'
139
56
  - !ruby/object:Gem::Dependency
140
- name: pry-nav
57
+ name: rspec
141
58
  requirement: !ruby/object:Gem::Requirement
142
59
  requirements:
143
60
  - - ">="
@@ -160,6 +77,7 @@ files:
160
77
  - LICENSE.txt
161
78
  - README.md
162
79
  - lib/quandl/config.rb
80
+ - lib/quandl/config/config.rb
163
81
  - lib/quandl/config/configurable.rb
164
82
  - lib/quandl/config/project_root.rb
165
83
  - lib/quandl/config/version.rb
@@ -189,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
107
  version: '0'
190
108
  requirements: []
191
109
  rubyforge_project:
192
- rubygems_version: 2.4.8
110
+ rubygems_version: 2.6.10
193
111
  signing_key:
194
112
  specification_version: 4
195
113
  summary: OpenStruct-based per-class configuration.
@@ -200,4 +118,3 @@ test_files:
200
118
  - spec/quandl/quandl-config_spec.rb
201
119
  - spec/quandl/quandl-configurable_spec.rb
202
120
  - spec/spec_helper.rb
203
- has_rdoc: