settings_spec 0.0.1 → 0.0.2
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +4 -0
- data/README.md +6 -1
- data/lib/settings_spec.rb +15 -0
- data/lib/settings_spec/specs.rb +10 -0
- data/lib/settings_spec/version.rb +1 -1
- data/settings_spec.gemspec +5 -5
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f0c66fe5378c6861f66a445285d47022bbd94a1
|
4
|
+
data.tar.gz: c1f52bc7e4028265dc6f2263f65d765d7527db28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b865a786ea1f6d7bb3d0bb9b076979c53b06aa16209a45210c962f8720dbdde8f7a98ae56ce1e6a3c8531cb80b2cae553ff8465a1754683fda9450905f1e906
|
7
|
+
data.tar.gz: e2e5b11db0e5cae4ac56afd2c69413b40afffae92921070418f0487a2b8469241df07d19fc69145263296ac5fdd99a3364c8967d9e48b1f3b60ff8e928e1442f
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# SettingsSpec
|
2
2
|
|
3
|
+
[](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
|
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`)
|
data/lib/settings_spec.rb
CHANGED
@@ -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
|
data/lib/settings_spec/specs.rb
CHANGED
@@ -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?
|
data/settings_spec.gemspec
CHANGED
@@ -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
|
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
|
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.
|
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-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|