settings_spec 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: 73c75fa0d47ef93ab5ff71705e0ef6ed18d24ace
4
- data.tar.gz: 53674bca88cba8e549beb27caa892178ad55ea59
3
+ metadata.gz: 6f0c66fe5378c6861f66a445285d47022bbd94a1
4
+ data.tar.gz: c1f52bc7e4028265dc6f2263f65d765d7527db28
5
5
  SHA512:
6
- metadata.gz: 06a40d1d51bf5497a05c65fb6de5a8a06c4822b83ffa63c2d110ee28f3a86ad38bd23028622e39e5517ffd22383bc5795878a3702924cfe1603706203dd6e03b
7
- data.tar.gz: 054e05de667d00c3b51cd98c1d658d3e63489a491219138b0e836c1ac0eabe68735020764f17a8de6c460332a234962536a55b2f7d3bcbfe2ce9d0491df143cf
6
+ metadata.gz: 8b865a786ea1f6d7bb3d0bb9b076979c53b06aa16209a45210c962f8720dbdde8f7a98ae56ce1e6a3c8531cb80b2cae553ff8465a1754683fda9450905f1e906
7
+ data.tar.gz: e2e5b11db0e5cae4ac56afd2c69413b40afffae92921070418f0487a2b8469241df07d19fc69145263296ac5fdd99a3364c8967d9e48b1f3b60ff8e928e1442f
data/.gitignore CHANGED
@@ -21,3 +21,4 @@ tmp
21
21
  *.a
22
22
  mkmf.log
23
23
  .DS_Store
24
+ .ruby-version
@@ -1,3 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 1.9.3
3
4
  - 2.1.2
5
+
6
+ script:
7
+ - bundle exec rake
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # SettingsSpec
2
2
 
3
+ [![Build Status](https://travis-ci.org/YanhaoYang/settings_spec.svg?branch=master)](https://travis-ci.org/YanhaoYang/settings_spec)
4
+
3
5
  There are many tools to load configurations in Rails, such as
4
6
  [rais\_config](https://github.com/railsconfig/rails_config),
5
7
  [settingslogic](https://github.com/binarylogic/settingslogic).
@@ -22,6 +24,9 @@ you write rules to validate the configuration file, so that you know
22
24
  the configuration file is all right before an invalid configuration
23
25
  file breaks the application.
24
26
 
27
+ It is tested on Ruby 1.9.3, 2.1.2. It should also work on Ruby 1.8.7,
28
+ but you have to use `lambda` rather than `->`.
29
+
25
30
  ## Installation
26
31
 
27
32
  Add this line to your application's Gemfile:
@@ -101,7 +106,7 @@ Suppose the specification file is loaded this way:
101
106
 
102
107
  ## Contributing
103
108
 
104
- 1. Fork it ( https://github.com/YanhaoYang/settings\_spec/fork )
109
+ 1. Fork it [https://github.com/YanhaoYang/settings\_spec/fork](https://github.com/YanhaoYang/settings_spec/fork)
105
110
  2. Create your feature branch (`git checkout -b my-new-feature`)
106
111
  3. Commit your changes (`git commit -am 'Add some feature'`)
107
112
  4. Push to the branch (`git push origin my-new-feature`)
@@ -7,6 +7,21 @@ module SettingsSpec
7
7
 
8
8
  class InvalidSpec < StandardError; end
9
9
 
10
+ # Loads specifications from +spec_file+, a YAML file. The +spec_file+ can be
11
+ # composed of several sections for different environments, like:
12
+ #
13
+ # defaults: &defaults
14
+ # ...
15
+ # development:
16
+ # <<: *defaults
17
+ # ...
18
+ # test:
19
+ # <<: *defaults
20
+ # ...
21
+ #
22
+ # +namespace+ is used to specify the environment. In a Rails application, it
23
+ # may be +Rails.env+ usually.
24
+ #
10
25
  def self.load(spec_file, namespace)
11
26
  specs = YAML.load_file(spec_file)
12
27
  specs = specs[namespace] if namespace
@@ -1,6 +1,7 @@
1
1
  module SettingsSpec
2
2
  class Specs
3
3
 
4
+ # A Hash whose keys are the keys of the invalid entries joined by "."
4
5
  attr_reader :errors
5
6
 
6
7
  def initialize(specs)
@@ -8,14 +9,23 @@ module SettingsSpec
8
9
  @errors = {}
9
10
  end
10
11
 
12
+ # Verifies the +settings+ against the specifications having been loaded.
13
+ #
14
+ # +settings+ can be a Hash, or any object responding to <tt>:[]</tt> or
15
+ # keys in the settings.
16
+ #
17
+ # Returns +true+ if there is no error, +false+ if there are errors. Errors can
18
+ # be accessed by <tt>Specs#errors</tt>.
11
19
  def verify(settings)
12
20
  if settings
13
21
  check([], @specs, settings)
14
22
  else
15
23
  @errors['.'] = 'Settings is a nil?!'
16
24
  end
25
+ @errors.empty?
17
26
  end
18
27
 
28
+ # Same as <tt>Specs#verify</tt>, but raises an exception when the settings are invalid.
19
29
  def verify!(settings)
20
30
  verify(settings)
21
31
  unless @errors.empty?
@@ -1,3 +1,3 @@
1
1
  module SettingsSpec
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.6"
22
- spec.add_development_dependency "rake", "~> 10.3.2"
23
- spec.add_development_dependency "rspec", "~> 3.0.0"
24
- spec.add_development_dependency "settingslogic", "~> 2.0.9"
25
- spec.add_development_dependency "rails_config", "~> 0.4.2"
26
- spec.add_development_dependency "app_config", "~> 2.5.1"
22
+ spec.add_development_dependency "rake", "~> 10.3"
23
+ spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "settingslogic", "~> 2.0"
25
+ spec.add_development_dependency "rails_config", "~> 0.4"
26
+ spec.add_development_dependency "app_config", "~> 2.5"
27
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: settings_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yanhao Yang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-06 00:00:00.000000000 Z
11
+ date: 2014-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,70 +30,70 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 10.3.2
33
+ version: '10.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 10.3.2
40
+ version: '10.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.0
47
+ version: '3.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.0.0
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: settingslogic
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.0.9
61
+ version: '2.0'
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: 2.0.9
68
+ version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rails_config
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.4.2
75
+ version: '0.4'
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.4.2
82
+ version: '0.4'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: app_config
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 2.5.1
89
+ version: '2.5'
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: 2.5.1
96
+ version: '2.5'
97
97
  description: Verifies the configurations against the specifications in a YAML file
98
98
  email:
99
99
  - yanhao.yang@gmail.com