has_configuration 0.2.4 → 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: ebff0280281752c0b1556b9a3b78ff373ef3d5f9
4
- data.tar.gz: af60528f4c04a911de41688962cf09e286e1a1d3
3
+ metadata.gz: 40f44c4cea757f02eefd7f88c4ebe57191f7fd66
4
+ data.tar.gz: 8f43c0b7f09647f1b64a81bb087bb137340973ac
5
5
  SHA512:
6
- metadata.gz: 0da42542ceb0db1259ae25374f8a81742d53983d31e7facebdda9496636bf1273dddf40a1aedb6a84b925719cc46591e69ffd15bb8de939f83295f20a390ce46
7
- data.tar.gz: a73480c049c8520064fe58df406255e0f0070e85ef33975f65da5fd36ade95ddad7e4a60ebd0066fc8804d0a560bdca3d79810c0f9091e409aef221ede610902
6
+ metadata.gz: 702a7f3bb8b1c8f8f369a66a07d1f2ae9979282fd8aa501a8885dfa58a377dd8169bc726e96151a953feb69a37b91d196edcd68adfa7ff09bc23122c9ad192b6
7
+ data.tar.gz: 7e565b1b17efaa841c5fa15fa9f2377807df8b1b67a1c6ca1dadf94333fcbf73684234d56af5b3fe34fff860dd431c5005b72c9c9e68996ea69a964b1682cc5d
@@ -1,13 +1,11 @@
1
1
  require 'has_configuration/configuration'
2
2
 
3
3
  module HasConfiguration #:nodoc:
4
-
5
4
  def self.included(base)
6
5
  base.extend(ClassMethods)
7
6
  end
8
7
 
9
- module ClassMethods
10
-
8
+ module ClassMethods #:nodoc:
11
9
  # Load configuration settings from a yaml file and adds a class and an instance
12
10
  # method +configuration+ to the object.
13
11
  #
@@ -22,9 +20,10 @@ module HasConfiguration #:nodoc:
22
20
  # ==== Integration Examples
23
21
  #
24
22
  # has_configuration
25
- # # => loads setting without environment processing from the file #{self.class.name.downcase}.yml
23
+ # # => loads setting without environment processing from the
24
+ # # file #{self.class.name.downcase}.yml
26
25
  #
27
- # has_configuration :file => Rails.root.join('config', 'example.yml'), :env => 'staging'
26
+ # has_configuration file: Rails.root.join('config', 'example.yml'), env: 'staging'
28
27
  # # => loads settings for staging environment from RAILS_ROOT/config/example.yml file
29
28
  #
30
29
  # ==== YAML File Example
@@ -50,21 +49,24 @@ module HasConfiguration #:nodoc:
50
49
  # If the example above was loaded into a class +Foo+ in +production+ environment:
51
50
  #
52
51
  # Foo.configuration # => <HasConfiguration::Configuration:0x00...>
53
- # foo.new.configuration # => <HasConfiguration::Configuration:0x00...>
52
+ # Foo.new.configuration # => <HasConfiguration::Configuration:0x00...>
54
53
  #
55
54
  # # convenient getter methods
56
55
  # Foo.configuration.some.nested # => "value"
57
56
  #
58
57
  # # to_h returns a HashWithIndifferentAccess
59
- # Foo.configuration.to_h # => { :user => "root", :password => "prod-secret"
58
+ # Foo.configuration.to_h # => { :user => "root",
59
+ # # :password => "prod-secret",
60
60
  # # :some => { :nested => "value" } }
61
61
  # Foo.configuration.to_h[:some][:nested] # => "value"
62
62
  # Foo.configuration.to_h[:some]['nested'] # => "value"
63
63
  #
64
64
  # # force a special key type (when merging with other hashes)
65
- # Foo.configuration.to_h(:symbolized) # => { :user => "root", :password => "prod-secret"
65
+ # Foo.configuration.to_h(:symbolized) # => { :user => "root",
66
+ # # :password => "prod-secret",
66
67
  # # :some => { :nested => "value" } }
67
- # Foo.configuration.to_h(:stringify) # => { 'user' => "root", 'password' => "prod-secret"
68
+ # Foo.configuration.to_h(:stringify) # => { 'user' => "root",
69
+ # # 'password' => "prod-secret",
68
70
  # # 'some' => { 'nested' => "value" } }
69
71
  #
70
72
  def has_configuration(options = {})
@@ -72,26 +74,21 @@ module HasConfiguration #:nodoc:
72
74
  include Getter
73
75
  end
74
76
 
75
- module Getter #:nodoc:all
76
-
77
+ # Adds getters for the configuration
78
+ module Getter
77
79
  def self.included(base)
78
80
  base.extend(ClassMethods)
79
81
  end
80
82
 
81
- module ClassMethods
82
- def configuration
83
- @configuration
84
- end
83
+ module ClassMethods #:nodoc:
84
+ attr_reader :configuration
85
85
  end
86
86
 
87
87
  def configuration
88
88
  self.class.configuration
89
89
  end
90
-
91
90
  end
92
-
93
91
  end
94
-
95
92
  end
96
93
 
97
94
  class Object #:nodoc:
@@ -2,9 +2,8 @@ require 'active_support/core_ext/hash/indifferent_access'
2
2
  require 'ostruct'
3
3
  require 'yaml'
4
4
 
5
- module HasConfiguration #:nodoc:all
6
- class Configuration
7
-
5
+ module HasConfiguration #:nodoc:
6
+ class Configuration #:nodoc:
8
7
  def initialize(klass, options = {})
9
8
  @class_name = klass.name
10
9
  @options = options
@@ -51,7 +50,8 @@ module HasConfiguration #:nodoc:all
51
50
  filename = "#{@class_name.downcase}.yml"
52
51
  defined?(Rails) ? Rails.root.join('config', filename).to_s : filename
53
52
  else
54
- raise ArgumentError, "Unable to resolve filename, please add :file parameter to has_configuration"
53
+ fail ArgumentError,
54
+ 'Unable to resolve filename, please add :file parameter to has_configuration'
55
55
  end
56
56
  end
57
57
 
@@ -71,7 +71,9 @@ module HasConfiguration #:nodoc:all
71
71
  end
72
72
 
73
73
  def deep_symbolized_hash
74
- @deep_symbolized_hash ||= deep_transform_keys(@hash) { |key| key.to_sym rescue key }
74
+ @deep_symbolized_hash ||= deep_transform_keys(@hash) do |key|
75
+ key.respond_to?(:to_sym) ? key.to_sym : key
76
+ end
75
77
  end
76
78
 
77
79
  def deep_stringified_hash
@@ -86,6 +88,5 @@ module HasConfiguration #:nodoc:all
86
88
  end if hash
87
89
  result
88
90
  end
89
-
90
91
  end
91
92
  end
data/lib/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module HasConfiguration #:nodoc:
2
2
  module VERSION #:nodoc:
3
- MAJOR = 0
4
- MINOR = 2
5
- BUILD = 4
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ BUILD = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, BUILD].join('.')
8
8
  end
@@ -11,35 +11,35 @@ RSpec.describe HasConfiguration::Configuration do
11
11
  ).to receive(:raw_file).and_return(File.read(fixture))
12
12
  end
13
13
 
14
- describe ".new" do
14
+ describe '.new' do
15
15
  let(:fixture) { 'spec/fixtures/class.yml' }
16
16
 
17
- context "when no filename provided" do
18
- let(:file) { "/RAILS_ROOT/config/class.yml" }
17
+ context 'when no filename provided' do
18
+ let(:file) { '/RAILS_ROOT/config/class.yml' }
19
19
 
20
- it "loads default file" do
20
+ it 'loads default file' do
21
21
  expect_any_instance_of(Configuration).to receive(:raw_file).with(file)
22
22
  HasConfiguration::Configuration.new(klass)
23
23
  end
24
24
  end
25
25
 
26
- context "when filename provided" do
27
- let(:file) { "foo/bar.yml" }
26
+ context 'when filename provided' do
27
+ let(:file) { 'foo/bar.yml' }
28
28
 
29
- it "loads provided file" do
29
+ it 'loads provided file' do
30
30
  expect_any_instance_of(Configuration).to receive(:raw_file).with(file)
31
- HasConfiguration::Configuration.new(klass, :file => file)
31
+ HasConfiguration::Configuration.new(klass, file: file)
32
32
  end
33
33
  end
34
34
  end
35
35
 
36
- context "when initialized" do
36
+ context 'when initialized' do
37
37
  let(:environment) { nil }
38
38
 
39
- context "environment" do
39
+ context 'environment' do
40
40
  let(:fixture) { 'spec/fixtures/class.yml' }
41
41
 
42
- context "without env option" do
42
+ context 'without env option' do
43
43
  subject(:hash) { HasConfiguration::Configuration.new(klass).to_h }
44
44
 
45
45
  it 'return the expected hash' do
@@ -47,19 +47,18 @@ RSpec.describe HasConfiguration::Configuration do
47
47
  end
48
48
  end
49
49
 
50
- context "with env option" do
50
+ context 'with env option' do
51
51
  let(:environment) { 'production' }
52
52
 
53
- subject(:hash) { HasConfiguration::Configuration.new(klass, :env => environment).to_h }
53
+ subject(:hash) { HasConfiguration::Configuration.new(klass, env: environment).to_h }
54
54
 
55
55
  it 'return the expected hash' do
56
56
  expect(hash).to eq('env' => environment)
57
57
  end
58
58
  end
59
-
60
59
  end
61
60
 
62
- context "yaml defaults" do
61
+ context 'yaml defaults' do
63
62
  let(:fixture) { 'spec/fixtures/with_defaults.yml' }
64
63
 
65
64
  subject(:hash) { HasConfiguration::Configuration.new(klass).to_h }
@@ -69,7 +68,7 @@ RSpec.describe HasConfiguration::Configuration do
69
68
  end
70
69
  end
71
70
 
72
- context "with erb" do
71
+ context 'with erb' do
73
72
  let(:fixture) { 'spec/fixtures/with_erb.yml' }
74
73
 
75
74
  subject(:hash) { HasConfiguration::Configuration.new(klass).to_h }
@@ -78,39 +77,37 @@ RSpec.describe HasConfiguration::Configuration do
78
77
  expect(hash).to eq('erb' => Rails.env)
79
78
  end
80
79
  end
81
-
82
80
  end
83
81
 
84
- describe "#to_h" do
82
+ describe '#to_h' do
85
83
  let(:fixture) { 'spec/fixtures/with_nested_attributes.yml' }
86
84
 
87
- context "#to_h" do
85
+ context '#to_h' do
88
86
  subject { HasConfiguration::Configuration.new(klass).to_h }
89
87
  it { should be_a(HashWithIndifferentAccess) }
90
88
  end
91
89
 
92
- context "#to_h(:stringify)" do
90
+ context '#to_h(:stringify)' do
93
91
  subject { HasConfiguration::Configuration.new(klass).to_h(:stringify) }
94
92
  it { should eq('env' => 'test', 'nested' => { 'foo' => 'bar', 'baz' => true }) }
95
93
  end
96
94
 
97
- context "#to_h(:symbolized)" do
95
+ context '#to_h(:symbolized)' do
98
96
  subject { HasConfiguration::Configuration.new(klass).to_h(:symbolized) }
99
- it { should eq(:env => 'test', :nested => { :foo => 'bar', :baz => true }) }
97
+ it { should eq(env: 'test', nested: { foo: 'bar', baz: true }) }
100
98
  end
101
-
102
99
  end
103
100
 
104
- describe "struct methods" do
101
+ describe 'struct methods' do
105
102
  let(:configuration) { HasConfiguration::Configuration.new(klass) }
106
103
  let(:fixture) { 'spec/fixtures/with_nested_attributes.yml' }
107
104
 
108
- it "is structified" do
109
- expect(configuration.to_h[:env] ).to eql('test')
110
- expect(configuration.env ).to eql('test')
105
+ it 'is structified' do
106
+ expect(configuration.to_h[:env]).to eql('test')
107
+ expect(configuration.env).to eql('test')
111
108
 
112
- expect(configuration.to_h[:nested]['foo'] ).to eql('bar')
113
- expect(configuration.nested.foo ).to eql('bar')
109
+ expect(configuration.to_h[:nested]['foo']).to eql('bar')
110
+ expect(configuration.nested.foo).to eql('bar')
114
111
  end
115
112
  end
116
113
  end
@@ -1,15 +1,13 @@
1
1
  RSpec.describe HasConfiguration do
2
-
3
- context "when declared" do
4
-
2
+ context 'when declared' do
5
3
  before(:all) do
6
4
  Dummy = Class.new do
7
5
  require 'has_configuration'
8
- has_configuration :file => 'spec/fixtures/class.yml'
6
+ has_configuration file: 'spec/fixtures/class.yml'
9
7
  end
10
8
  end
11
9
 
12
- context "the class" do
10
+ context 'the class' do
13
11
  subject(:dummy) { Dummy }
14
12
 
15
13
  it { should respond_to(:configuration) }
@@ -19,7 +17,7 @@ RSpec.describe HasConfiguration do
19
17
  end
20
18
  end
21
19
 
22
- context "an instance" do
20
+ context 'an instance' do
23
21
  subject(:dummy) { Dummy.new }
24
22
 
25
23
  it { should respond_to(:configuration) }
@@ -28,7 +26,5 @@ RSpec.describe HasConfiguration do
28
26
  expect(dummy.configuration).to be
29
27
  end
30
28
  end
31
-
32
29
  end
33
-
34
30
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,5 @@
1
- if RUBY_VERSION >= "1.9"
2
- require 'coveralls'
3
- Coveralls.wear!
4
- end
1
+ require 'coveralls'
2
+ Coveralls.wear!
5
3
 
6
4
  # This file was generated by the `rspec --init` command. Conventionally, all
7
5
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
@@ -56,7 +54,7 @@ RSpec.configure do |config|
56
54
  # For more details, see:
57
55
  # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
58
56
  expectations.syntax = :expect
59
- end
57
+ end
60
58
 
61
59
  # These two settings work together to allow you to limit a spec run
62
60
  # to individual examples or groups you care about by tagging them with
@@ -1,5 +1,10 @@
1
1
  # Mocks Rails Environment
2
2
  Rails = Class.new do
3
- def self.root; Pathname.new("/RAILS_ROOT"); end
4
- def self.env ; 'test' ; end
3
+ def self.root
4
+ Pathname.new('/RAILS_ROOT')
5
+ end
6
+
7
+ def self.env
8
+ 'test'
9
+ end
5
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_configuration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Spickermann
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.3.5
19
+ version: 3.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.3.5
26
+ version: 3.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,8 +66,23 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: Loads configuration setting from a yml file and adds a configuation method
70
- to class and instances
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
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
+ description: |2
84
+ Loads configuration setting from a yml file and adds a configuation method
85
+ to class and instances
71
86
  email:
72
87
  - spickermann@gmail.com
73
88
  executables: []