benry-config 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE.txt +20 -0
- data/README.md +65 -0
- data/Rakefile +83 -0
- data/lib/benry/config.rb +140 -0
- data/test/config_test.rb +182 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3370f1b72911ca0f9a74d6240b1025a792166d3d
|
4
|
+
data.tar.gz: a4b2152cb0e4f51f4b3c36e25fccd66bf210f5e3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f81be992cc07abe26b2680940cf618daa2f5f4047ac91748e3ad16286d54d6c64a527a543e68e2fa50bcd7114307d3dfb4ac202d977b54ad5720651db3a3913
|
7
|
+
data.tar.gz: 1939f9f82a48c679ae927ea9f34f0e34d75bfb08e3909984b6e68a07267fb24f959a2a588e8bf2210a4721a96efef152bde1ebd4636089708b691d5e7b213021
|
data/MIT-LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 kuwata-lab.com
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
benry-config
|
2
|
+
============
|
3
|
+
|
4
|
+
($Release: 0.1.0 $)
|
5
|
+
|
6
|
+
|
7
|
+
Overview
|
8
|
+
--------
|
9
|
+
|
10
|
+
Utility class to support configuration.
|
11
|
+
|
12
|
+
* Easy to define configuration for environments (production, development, ...).
|
13
|
+
* Raises error when configuration name is wrong (typo).
|
14
|
+
* Represents secret configurations which should be set in private file.
|
15
|
+
|
16
|
+
|
17
|
+
Example
|
18
|
+
-------
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
#----- config/common.rb -----
|
22
|
+
require 'benry/config'
|
23
|
+
class CommonConfig < Benry::BaseConfig
|
24
|
+
add :db_user , "user1"
|
25
|
+
add :db_pass , ABSTRACT
|
26
|
+
add :session_cooie , "sess"
|
27
|
+
add :session_secret , SECRET
|
28
|
+
end
|
29
|
+
|
30
|
+
#----- config/development.rb -----
|
31
|
+
require 'config/common'
|
32
|
+
class Config < CommonConfig
|
33
|
+
set :db_pass , "pass1"
|
34
|
+
end
|
35
|
+
|
36
|
+
#----- config/development.private -----
|
37
|
+
Config.class_eval do
|
38
|
+
set :session_secret , "abc123"
|
39
|
+
end
|
40
|
+
|
41
|
+
#----- main.rb -----
|
42
|
+
## Ruby < 2.2 has obsoleted 'Config' class, therefore remove it at first.
|
43
|
+
Object.class_eval { remove_const :Config } if defined?(Config)
|
44
|
+
#
|
45
|
+
rack_env = ENV['RACK_ENV'] or raise "$RACK_ENV required."
|
46
|
+
require "./config/#{rack_env}.rb"
|
47
|
+
load "./config/#{rack_env}.private"
|
48
|
+
#
|
49
|
+
$config = Config.new.freeze
|
50
|
+
p $config.db_user #=> "user1"
|
51
|
+
p $config.db_pass #=> "pass1"
|
52
|
+
p $config.session_cookie #=> "sess"
|
53
|
+
p $config.session_secret #=> "abc123"
|
54
|
+
#
|
55
|
+
p $config.get_all(:db_) #=> {:user=>"user1", :pass=>"pass1"}
|
56
|
+
p $config.get_all(:session_) #=> {:cookie=>"sess", :secret=>"abc123"}
|
57
|
+
```
|
58
|
+
|
59
|
+
|
60
|
+
Copyright and License
|
61
|
+
---------------------
|
62
|
+
|
63
|
+
$Copyright: copyright(c) 2016 kuwata-lab.com all rights reserved $
|
64
|
+
|
65
|
+
$License: MIT License $
|
data/Rakefile
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
project = "benry-config"
|
5
|
+
release = ENV['RELEASE'] || "0.0.0"
|
6
|
+
copyright = "copyright(c) 2016 kuwata-lab.com all rights reserved"
|
7
|
+
license = "MIT License"
|
8
|
+
|
9
|
+
target_files = Dir[*%W[
|
10
|
+
README.md MIT-LICENSE.txt Rakefile
|
11
|
+
lib/**/*.rb
|
12
|
+
test/**/*_test.rb
|
13
|
+
#{project}.gemspec
|
14
|
+
]]
|
15
|
+
|
16
|
+
|
17
|
+
task :default => :help
|
18
|
+
|
19
|
+
|
20
|
+
desc "show help"
|
21
|
+
task :help do
|
22
|
+
puts "rake help # help"
|
23
|
+
puts "rake test # run test"
|
24
|
+
puts "rake package RELEASE=X.X.X # create gem file"
|
25
|
+
puts "rake publish RELEASE=X.X.X # upload gem file"
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
desc "do test"
|
30
|
+
task :test do
|
31
|
+
sh "ruby", *Dir.glob("test/*.rb")
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
desc "create package"
|
36
|
+
task :package do
|
37
|
+
release != "0.0.0" or
|
38
|
+
raise "specify $RELEASE"
|
39
|
+
## copy
|
40
|
+
dir = "build"
|
41
|
+
rm_rf dir if File.exist?(dir)
|
42
|
+
mkdir dir
|
43
|
+
target_files.each do |file|
|
44
|
+
dest = File.join(dir, File.dirname(file))
|
45
|
+
mkdir_p dest, :verbose=>false unless File.exist?(dest)
|
46
|
+
cp file, "#{dir}/#{file}"
|
47
|
+
end
|
48
|
+
## edit
|
49
|
+
Dir.glob("#{dir}/**/*").each do |file|
|
50
|
+
next unless File.file?(file)
|
51
|
+
File.open(file, 'rb+') do |f|
|
52
|
+
s = f.read()
|
53
|
+
s = s.gsub(/\$Release: 0.1.0 $/, "$"+"Release: #{release} $")
|
54
|
+
s = s.gsub(/\$Copyright: copyright(c) 2016 kuwata-lab.com all rights reserved $/, "$"+"Copyright: #{copyright} $")
|
55
|
+
s = s.gsub(/\$License: MIT License $/, "$"+"License: #{license} $")
|
56
|
+
#
|
57
|
+
f.rewind()
|
58
|
+
f.truncate(0)
|
59
|
+
f.write(s)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
## build
|
63
|
+
chdir dir do
|
64
|
+
sh "gem build #{project}.gemspec"
|
65
|
+
end
|
66
|
+
mv "#{dir}/#{project}-#{release}.gem", "."
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
desc "upload gem file to rubygems.org"
|
71
|
+
task :publish do
|
72
|
+
release != "0.0.0" or
|
73
|
+
raise "specify $RELEASE"
|
74
|
+
#
|
75
|
+
gemfile = "#{project}-#{release}.gem"
|
76
|
+
print "** Are you sure to publish #{gemfile}? [y/N]: "
|
77
|
+
ans = $stdin.gets().strip()
|
78
|
+
if ans.downcase.start_with?("y")
|
79
|
+
sh "gem push #{gemfile}"
|
80
|
+
sh "git tag #{project}-#{release}"
|
81
|
+
sh "git push --tags"
|
82
|
+
end
|
83
|
+
end
|
data/lib/benry/config.rb
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
###
|
4
|
+
### $Release: 0.1.0 $
|
5
|
+
### $Copyright: copyright(c) 2016 kuwata-lab.com all rights reserved $
|
6
|
+
### $License: MIT License $
|
7
|
+
###
|
8
|
+
|
9
|
+
|
10
|
+
module Benry
|
11
|
+
|
12
|
+
|
13
|
+
class ConfigError < StandardError
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
##
|
18
|
+
## Configuration class.
|
19
|
+
##
|
20
|
+
## ex:
|
21
|
+
##
|
22
|
+
## #----- config/common.rb -----
|
23
|
+
## require 'benry/config'
|
24
|
+
## class CommonConfig < Benry::BaseConfig
|
25
|
+
## add :db_user , "user1"
|
26
|
+
## add :db_pass , ABSTRACT
|
27
|
+
## add :session_cooie , "SESS"
|
28
|
+
## add :session_secret , SECRET
|
29
|
+
## end
|
30
|
+
##
|
31
|
+
## #----- config/development.rb -----
|
32
|
+
## require 'config/common'
|
33
|
+
## class Config < TestCommonConfig
|
34
|
+
## set :db_pass , "pass1"
|
35
|
+
## end
|
36
|
+
##
|
37
|
+
## #----- config/development.private -----
|
38
|
+
## class Config
|
39
|
+
## set :session_secret , "abc123"
|
40
|
+
## end
|
41
|
+
##
|
42
|
+
## #----- main.rb -----
|
43
|
+
## rack_env = ENV['RACK_ENV'] or raise "$RACK_ENV required."
|
44
|
+
## require "./config/#{rack_env}.rb"
|
45
|
+
## load "./config/#{rack_env}.private"
|
46
|
+
## #
|
47
|
+
## $config = Config.new.freeze
|
48
|
+
## p $config.db_user #=> "user1"
|
49
|
+
## p $config.db_pass #=> "pass1"
|
50
|
+
## p $config.session_cookie #=> "SESS"
|
51
|
+
## p $config.session_secret #=> "abc123"
|
52
|
+
## #
|
53
|
+
## p $config.get_all(:db_) #=> {:user=>"user1", :pass=>"pass1"}
|
54
|
+
## p $config.get_all(:session_) #=> {:cookie=>"SESS", :secret=>"abc123"}
|
55
|
+
##
|
56
|
+
class BaseConfig
|
57
|
+
|
58
|
+
class AbstractValue
|
59
|
+
end
|
60
|
+
|
61
|
+
ABSTRACT = AbstractValue.new # represents 'should be set in subclass'
|
62
|
+
SECRET = AbstractValue.new # represents 'should be set in private config file'
|
63
|
+
|
64
|
+
def initialize
|
65
|
+
#; [!7rdq4] traverses parent class and gathers config values.
|
66
|
+
pr = proc {|cls|
|
67
|
+
pr.call(cls.superclass) if cls.superclass
|
68
|
+
d = cls.instance_variable_get('@__dict')
|
69
|
+
d.each {|k, v| instance_variable_set("@#{k}", v) } if d
|
70
|
+
}
|
71
|
+
pr.call(self.class)
|
72
|
+
#; [!z9mno] raises ConfigError when ABSTRACT or SECRET is not overriden.
|
73
|
+
instance_variables().each do |ivar|
|
74
|
+
val = instance_variable_get(ivar)
|
75
|
+
! val.is_a?(AbstractValue) or
|
76
|
+
raise ConfigError.new("config ':#{ivar.to_s[1..-1]}' should be set, but not.")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
## Add new config. Raises ConfigError when already defined.
|
81
|
+
def self.add(key, value, desc=nil)
|
82
|
+
#; [!m7w96] raises ConfigError when already added.
|
83
|
+
! self.method_defined?(key) or
|
84
|
+
raise ConfigError.new("add #{key.inspect} : already defined (use set() instead).")
|
85
|
+
#; [!s620t] adds new key and value.
|
86
|
+
(@__dict ||= {})[key] = value
|
87
|
+
#; [!o0ts4] defines getter method.
|
88
|
+
attr_reader key
|
89
|
+
value
|
90
|
+
end
|
91
|
+
|
92
|
+
## Set existing config. Raises ConfigError when key not defined.
|
93
|
+
def self.set(key, value, desc=nil)
|
94
|
+
#; [!fxc4h] raises ConfigError when not defined yet.
|
95
|
+
self.method_defined?(key) or
|
96
|
+
raise ConfigError.new("set #{key.inspect} : not defined (use add() instead).")
|
97
|
+
#; [!cv8iz] overrides existing value.
|
98
|
+
(@__dict ||= {})[key] = value
|
99
|
+
value
|
100
|
+
end
|
101
|
+
|
102
|
+
## Add or set config. Raises nothing whether defined or not.
|
103
|
+
def self.put(key, value, desc=nil)
|
104
|
+
#; [!abd3f] raises nothing whener defined or not.
|
105
|
+
#; [!gu2f0] sets key and value.
|
106
|
+
(@__dict ||= {})[key] = value
|
107
|
+
#; [!84kbr] defines getter method.
|
108
|
+
attr_reader key
|
109
|
+
value
|
110
|
+
end
|
111
|
+
|
112
|
+
## Return config value.
|
113
|
+
def [](key)
|
114
|
+
#; [!z9r30] returns config value.
|
115
|
+
return self.__send__(key)
|
116
|
+
end
|
117
|
+
|
118
|
+
## Gathers related configs starting with prefix specified.
|
119
|
+
def get_all(prefix_key)
|
120
|
+
#; [!85z23] gathers configs which name starts with specified prefix.
|
121
|
+
prefix = "@#{prefix_key}"
|
122
|
+
symbol_p = prefix_key.is_a?(Symbol)
|
123
|
+
range = prefix.length..-1
|
124
|
+
d = {}
|
125
|
+
self.instance_variables.each do |ivar|
|
126
|
+
if ivar.to_s.start_with?(prefix)
|
127
|
+
val = self.instance_variable_get(ivar)
|
128
|
+
key = ivar[range]
|
129
|
+
#; [!b72fr] if prefix is a string, then keys returend will also be string.
|
130
|
+
key = key.intern if symbol_p
|
131
|
+
d[key] = val
|
132
|
+
end
|
133
|
+
end
|
134
|
+
return d
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
end
|
data/test/config_test.rb
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'minitest/spec'
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'minitest/ok'
|
6
|
+
|
7
|
+
require 'benry/config'
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
class TestCommonConfig < Benry::BaseConfig
|
13
|
+
add :db_name , "db1"
|
14
|
+
add :db_user , "user1"
|
15
|
+
add :db_pass , ABSTRACT
|
16
|
+
add :session_secret , SECRET
|
17
|
+
end
|
18
|
+
|
19
|
+
class TestConfig < TestCommonConfig
|
20
|
+
set :db_pass , "pass1"
|
21
|
+
set :session_secret , "abc123"
|
22
|
+
end
|
23
|
+
|
24
|
+
class TestConfig2 < TestCommonConfig
|
25
|
+
#set :db_pass , "pass1"
|
26
|
+
set :session_secret , "abc123"
|
27
|
+
end
|
28
|
+
|
29
|
+
class TestConfig3 < TestCommonConfig
|
30
|
+
set :db_pass , "pass1"
|
31
|
+
#set :session_secret , "abc123"
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
describe Benry::BaseConfig do
|
37
|
+
|
38
|
+
|
39
|
+
describe '#initialize()' do
|
40
|
+
|
41
|
+
it "[!7rdq4] traverses parent class and gathers config values." do
|
42
|
+
config = TestConfig.new
|
43
|
+
ok {config.db_name} == "db1"
|
44
|
+
ok {config.db_user} == "user1"
|
45
|
+
ok {config.db_pass} == "pass1"
|
46
|
+
ok {config.session_secret} == "abc123"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "[!z9mno] raises ConfigError when ABSTRACT or SECRET is not overriden." do
|
50
|
+
pr = proc { TestConfig2.new }
|
51
|
+
ex = ok {pr}.raise?(Benry::ConfigError)
|
52
|
+
ok {ex.message} == "config ':db_pass' should be set, but not."
|
53
|
+
#
|
54
|
+
pr = proc { TestConfig3.new }
|
55
|
+
ex = ok {pr}.raise?(Benry::ConfigError)
|
56
|
+
ok {ex.message} == "config ':session_secret' should be set, but not."
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
describe '.add()' do
|
63
|
+
|
64
|
+
it "[!m7w96] raises ConfigError when already added." do
|
65
|
+
pr = proc do
|
66
|
+
TestCommonConfig.class_eval do
|
67
|
+
add :db_name, "db9"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
ex = ok {pr}.raise?(Benry::ConfigError)
|
71
|
+
ok {ex.message} == "add :db_name : already defined (use set() instead)."
|
72
|
+
end
|
73
|
+
|
74
|
+
it "[!s620t] adds new key and value." do
|
75
|
+
ok {TestCommonConfig.instance_variable_get('@__dict')} == {
|
76
|
+
:db_name => "db1",
|
77
|
+
:db_user => "user1",
|
78
|
+
:db_pass => Benry::BaseConfig::ABSTRACT,
|
79
|
+
:session_secret => Benry::BaseConfig::SECRET,
|
80
|
+
}
|
81
|
+
end
|
82
|
+
|
83
|
+
it "[!o0ts4] defines getter method." do
|
84
|
+
cls = Class.new(Benry::BaseConfig) do
|
85
|
+
add :foo , "FOO"
|
86
|
+
end
|
87
|
+
obj = cls.new
|
88
|
+
ok {obj}.respond_to?(:foo)
|
89
|
+
ok {obj.foo} == "FOO"
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
describe '.set()' do
|
96
|
+
|
97
|
+
it "[!fxc4h] raises ConfigError when not defined yet." do
|
98
|
+
pr = proc do
|
99
|
+
TestCommonConfig.class_eval do
|
100
|
+
set :db_port, 5432
|
101
|
+
end
|
102
|
+
end
|
103
|
+
ex = ok {pr}.raise?(Benry::ConfigError)
|
104
|
+
ok {ex.message} == "set :db_port : not defined (use add() instead)."
|
105
|
+
end
|
106
|
+
|
107
|
+
it "[!cv8iz] overrides existing value." do
|
108
|
+
ok {TestConfig.instance_variable_get('@__dict')} == {
|
109
|
+
:db_pass => "pass1",
|
110
|
+
:session_secret => "abc123",
|
111
|
+
}
|
112
|
+
#
|
113
|
+
config = TestConfig.new
|
114
|
+
ok {config.db_pass} == "pass1"
|
115
|
+
ok {config.session_secret} == "abc123"
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
describe '.put()' do
|
122
|
+
|
123
|
+
it "[!abd3f] raises nothing whener defined or not." do
|
124
|
+
pr = proc do
|
125
|
+
Class.new(TestCommonConfig) do
|
126
|
+
put :db_name , "db9" # existing
|
127
|
+
put :db_port , "5432" # not existing
|
128
|
+
end
|
129
|
+
end
|
130
|
+
ok {pr}.NOT.raise?(Exception)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "[!gu2f0] sets key and value." do
|
134
|
+
cls = Class.new(TestCommonConfig) do
|
135
|
+
put :db_name , "db9" # existing
|
136
|
+
put :db_port , 5432 # not existing
|
137
|
+
end
|
138
|
+
ok {cls.instance_variable_get('@__dict')} == {
|
139
|
+
:db_name => "db9",
|
140
|
+
:db_port => 5432,
|
141
|
+
}
|
142
|
+
end
|
143
|
+
|
144
|
+
it "[!84kbr] defines getter method." do
|
145
|
+
cls = Class.new(TestCommonConfig) do
|
146
|
+
put :db_name , "db9" # existing
|
147
|
+
put :db_port , 5432 # not existing
|
148
|
+
end
|
149
|
+
ok {cls}.method_defined?(:db_name)
|
150
|
+
ok {cls}.method_defined?(:db_port)
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
describe '#[]' do
|
157
|
+
|
158
|
+
it "[!z9r30] returns config value." do
|
159
|
+
config = TestConfig.new()
|
160
|
+
ok {config[:db_user]} == "user1"
|
161
|
+
ok {config[:db_pass]} == "pass1"
|
162
|
+
end
|
163
|
+
|
164
|
+
end
|
165
|
+
|
166
|
+
|
167
|
+
describe '#get_all()' do
|
168
|
+
|
169
|
+
it "[!85z23] gathers configs which name starts with specified prefix." do
|
170
|
+
config = TestConfig.new()
|
171
|
+
ok {config.get_all(:db_)} == {:name=>"db1", :user=>"user1", :pass=>"pass1"}
|
172
|
+
end
|
173
|
+
|
174
|
+
it "[!b72fr] if prefix is a string, then keys returend will also be string." do
|
175
|
+
config = TestConfig.new()
|
176
|
+
ok {config.get_all("db_")} == {"name"=>"db1", "user"=>"user1", "pass"=>"pass1"}
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
|
182
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: benry-config
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- makoto kuwata
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest-ok
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: 'See https://github.com/kwatch/benry/tree/ruby/benry-config for details.
|
42
|
+
|
43
|
+
'
|
44
|
+
email:
|
45
|
+
- kwa(at)kuwata-lab.com
|
46
|
+
executables: []
|
47
|
+
extensions: []
|
48
|
+
extra_rdoc_files: []
|
49
|
+
files:
|
50
|
+
- MIT-LICENSE.txt
|
51
|
+
- README.md
|
52
|
+
- Rakefile
|
53
|
+
- lib/benry/config.rb
|
54
|
+
- test/config_test.rb
|
55
|
+
homepage: https://github.com/kwatch/benry/tree/ruby/benry-config
|
56
|
+
licenses:
|
57
|
+
- MIT
|
58
|
+
metadata: {}
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.5.1
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: useful configuration class
|
79
|
+
test_files: []
|