configurations 1.0.1 → 1.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: 0e15768b4735b836614316e5add917727b13f06a
4
- data.tar.gz: e211a39356c76a333f2b855bc831341de38c876b
3
+ metadata.gz: 039597b55adc73ff8cddc05edd7c199f5f2c252f
4
+ data.tar.gz: 1dec69ab7582283ab60f950dc3caa96e92ff2b95
5
5
  SHA512:
6
- metadata.gz: 5d0140d31188351ae3af656201eedebe5c1f68e4f98f4ad44c27557c366f761cf9a84079199ea1cc800dddaf753a09ce02645e75c9497a295bb0af17f44ac929
7
- data.tar.gz: 6cb2bb2c5e950d40e49bcd1342017eb7723916799883770d7f98d9fb2d2a1a6873c69a8b59a3ac404c372999266a07df98e639c261c7ad1a22715e83d17d90ad
6
+ metadata.gz: e7a927942a4bce9f187a1f491f9469ac898cc62e2687c3b2111163d6b8b665ebaea70767f52fabcdb2e11c1544bc005168610317632ecabe8211373c993897d3
7
+ data.tar.gz: 97ae55c4e7c2ccae76aab97aa75c912c4b79bbf4a5fc7ebdb752b7150d9b0be821598fc9f060f484e7b456a1a153072a5a5672260c2ca96548d1c2789c6ca89e
data/README.md CHANGED
@@ -140,13 +140,13 @@ MyGem.configuration.to_h #=> a Hash
140
140
  ### Some caveats
141
141
 
142
142
  The `to_h` from above is along with `method_missing`, `object_id` and `initialize` the only purposely defined method which you can not overwrite with a configuration value.
143
- Apart from these methods, you should be able to set pretty much any property name you like. `Configuration` inherits from `BasicObject`, so even standard Ruby method names are available.
143
+ Apart from these methods, you should be able to set pretty much any property name you like. `Configuration` inherits from `BasicObject`, so even `Kernel` and `Object` method names are available.
144
144
 
145
145
  ## Contributing
146
146
 
147
147
  YES!
148
148
 
149
- Let's make this awesome. Write tests for your added stuff, bonus points for feature branches. If you don't have to time to write a fix, raise an issue.
149
+ Let's make this awesome. Write tests for your added stuff, bonus points for feature branches. If you don't have the time to write a fix, raise an issue.
150
150
 
151
151
  ### Copyright
152
152
 
@@ -12,5 +12,5 @@ module Configurations
12
12
 
13
13
  # Version number of Configurations
14
14
  #
15
- VERSION = '1.0.1'
15
+ VERSION = '1.1.0'
16
16
  end
@@ -20,8 +20,10 @@ module Configurations
20
20
  class << self
21
21
  # The central configure method
22
22
  # @params [Proc] block the block to configure host module with
23
+ # @raise [ArgumentError] error when not given a block
23
24
  #
24
25
  def configure(&block)
26
+ raise ArgumentError, 'can not configure without a block' unless block_given?
25
27
  @configuration = #{self}::Configuration.new(@configuration_defaults, @configurable, &block)
26
28
  end
27
29
  end
@@ -33,7 +35,9 @@ module Configurations
33
35
  module ClassMethods
34
36
  # A reader for Configuration
35
37
  #
36
- attr_reader :configuration
38
+ def configuration
39
+ @configuration ||= @configuration_defaults && configure { }
40
+ end
37
41
 
38
42
  # Configuration defaults can be used to set the defaults of any Configuration
39
43
  # @param [Proc] block setting the default values of the configuration
@@ -60,7 +60,7 @@ module Configurations
60
60
  def method_missing(method, *args, &block)
61
61
  property = method.to_s[0..-2].to_sym
62
62
 
63
- if _is_writer?(method) && _configurable?(property)
63
+ if _is_writer?(method) && @_writeable && _configurable?(property)
64
64
  _assert_type!(property, args.first)
65
65
  @configuration[property] = args.first
66
66
  elsif !_is_writer?(method) && @_writeable || _configured?(method)
@@ -3,6 +3,9 @@ require 'test_helper'
3
3
  class TestConfiguration < Minitest::Test
4
4
 
5
5
  ConfigurationTestModule = testmodule_for(Configurations)
6
+ ConfigurationDefaultTestModule = testmodule_for(Configurations)
7
+ ConfigurationNoDefaultTestModule = testmodule_for(Configurations)
8
+
6
9
  ConfigurationTestModule.module_eval do
7
10
  configuration_defaults do |c|
8
11
  c.uh.this.is.neat = 'NEAT'
@@ -11,6 +14,13 @@ class TestConfiguration < Minitest::Test
11
14
  c.overwriteee = 'BLA'
12
15
  end
13
16
  end
17
+
18
+ ConfigurationDefaultTestModule.module_eval do
19
+ configuration_defaults do |c|
20
+ c.set = 'SET'
21
+ end
22
+ end
23
+
14
24
  def setup
15
25
  ConfigurationTestModule.configure do |c|
16
26
  c.basic = 'BASIC'
@@ -51,10 +61,24 @@ class TestConfiguration < Minitest::Test
51
61
  }, @configuration.to_h)
52
62
  end
53
63
 
64
+ def test_not_configurable_unless_block_given
65
+ assert_raises ArgumentError do
66
+ ConfigurationTestModule.configure
67
+ end
68
+ end
69
+
54
70
  def test_defaults
55
71
  assert_equal 'PUH', @configuration.pah
56
72
  end
57
73
 
74
+ def test_defaults_without_configure
75
+ assert_equal 'SET', ConfigurationDefaultTestModule.configuration.set
76
+ end
77
+
78
+ def test_no_defaults_without_configure
79
+ assert_nil ConfigurationNoDefaultTestModule.configuration
80
+ end
81
+
58
82
  def test_defaults_overwrite
59
83
  assert_equal 'YEAH', @configuration.overwriteee
60
84
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configurations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Beat Richartz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-16 00:00:00.000000000 Z
11
+ date: 2014-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest