buff-config 0.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.
- data/.gitignore +17 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/CONTRIBUTING.md +24 -0
- data/Gemfile +3 -0
- data/Guardfile +15 -0
- data/LICENSE +15 -0
- data/README.md +36 -0
- data/Thorfile +43 -0
- data/buff-config.gemspec +36 -0
- data/lib/buff-config.rb +1 -0
- data/lib/buff/config.rb +32 -0
- data/lib/buff/config/errors.rb +7 -0
- data/lib/buff/config/json.rb +59 -0
- data/lib/buff/config/version.rb +5 -0
- data/spec/buff/config/json_spec.rb +129 -0
- data/spec/buff/config_spec.rb +34 -0
- data/spec/spec_helper.rb +45 -0
- metadata +278 -0
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.3-p429
|
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
## Running tests
|
4
|
+
|
5
|
+
### Install prerequisites
|
6
|
+
|
7
|
+
Install the latest version of [Bundler](http://gembundler.com)
|
8
|
+
|
9
|
+
$ gem install bundler
|
10
|
+
|
11
|
+
Clone the project
|
12
|
+
|
13
|
+
$ git clone git://github.com/RiotGames/buff-ruby_engine.git
|
14
|
+
|
15
|
+
and run:
|
16
|
+
|
17
|
+
$ cd buff-ruby_engine
|
18
|
+
$ bundle install
|
19
|
+
|
20
|
+
Bundler will install all gems and their dependencies required for testing and developing.
|
21
|
+
|
22
|
+
### Running unit (RSpec) tests
|
23
|
+
|
24
|
+
$ bundle exec guard start
|
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
notification :off
|
2
|
+
|
3
|
+
guard "spork" do
|
4
|
+
watch('Gemfile')
|
5
|
+
watch('spec/spec_helper.rb') { :rspec }
|
6
|
+
watch(%r{^spec/support/.+\.rb$}) { :rspec }
|
7
|
+
end
|
8
|
+
|
9
|
+
guard "rspec", cli: "--color --drb --format Fuubar", all_on_start: false, all_after_pass: false do
|
10
|
+
watch(%r{^spec/.+_spec\.rb$})
|
11
|
+
|
12
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
13
|
+
watch('spec/spec_helper.rb') { "spec" }
|
14
|
+
watch(%r{^spec/support/.+\.rb$}) { "spec" }
|
15
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
Copyright 2012-2013 Riot Games
|
2
|
+
|
3
|
+
Jamie Winsor (<reset@riotgames.com>)
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Buff::Config
|
2
|
+
[](http://badge.fury.io/rb/buff-config)
|
3
|
+
[](https://travis-ci.org/RiotGames/buff-config)
|
4
|
+
|
5
|
+
A simple configuration class
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem 'buff-config'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install buff-config
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
require 'buff/config/json'
|
24
|
+
|
25
|
+
class MyConfig < Buff::Config::JSON
|
26
|
+
attribute 'chef.chef_server_url'
|
27
|
+
end
|
28
|
+
|
29
|
+
my_config = MyConfig.new
|
30
|
+
my_config.chef.chef_server_url #=> nil
|
31
|
+
|
32
|
+
# Authors and Contributors
|
33
|
+
|
34
|
+
* Jamie Winsor (<reset@riotgames.com>)
|
35
|
+
|
36
|
+
Thank you to all of our [Contributors](https://github.com/RiotGames/buff-config/graphs/contributors), testers, and users.
|
data/Thorfile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
require 'bundler'
|
5
|
+
require 'bundler/setup'
|
6
|
+
require 'buff/ruby_engine'
|
7
|
+
require 'buff/config/version'
|
8
|
+
|
9
|
+
class Default < Thor
|
10
|
+
extend Buff::RubyEngine
|
11
|
+
|
12
|
+
unless jruby?
|
13
|
+
require 'thor/rake_compat'
|
14
|
+
|
15
|
+
include Thor::RakeCompat
|
16
|
+
Bundler::GemHelper.install_tasks
|
17
|
+
|
18
|
+
desc "build", "Build buff-config-#{Buff::Config::VERSION}.gem into the pkg directory"
|
19
|
+
def build
|
20
|
+
Rake::Task["build"].execute
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "install", "Build and install buff-config-#{Buff::Config::VERSION}.gem into system gems"
|
24
|
+
def install
|
25
|
+
Rake::Task["install"].execute
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "release", "Create tag v#{Buff::Config::VERSION} and build and push buff-config-#{Buff::Config::VERSION}.gem to Rubygems"
|
29
|
+
def release
|
30
|
+
Rake::Task["release"].execute
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Spec < Thor
|
35
|
+
namespace :spec
|
36
|
+
default_task :unit
|
37
|
+
|
38
|
+
desc "unit", "run the project's unit tests"
|
39
|
+
def unit
|
40
|
+
exec "rspec --color --format=documentation spec"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/buff-config.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'buff/config/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "buff-config"
|
8
|
+
spec.version = Buff::Config::VERSION
|
9
|
+
spec.authors = ["Jamie Winsor"]
|
10
|
+
spec.email = ["reset@riotgames.com"]
|
11
|
+
spec.description = %q{A simple configuration class}
|
12
|
+
spec.summary = spec.description
|
13
|
+
spec.homepage = "https://github.com/RiotGames/buff-config"
|
14
|
+
spec.license = "Apache 2.0"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^spec/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
spec.required_ruby_version = ">= 1.9.2"
|
21
|
+
|
22
|
+
spec.add_dependency "varia_model", "~> 0.1"
|
23
|
+
spec.add_dependency "buff-extensions", "~> 0.3"
|
24
|
+
|
25
|
+
spec.add_development_dependency "buff-ruby_engine", "~> 0.1"
|
26
|
+
spec.add_development_dependency "thor", "~> 0.18.0"
|
27
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
28
|
+
spec.add_development_dependency "rake"
|
29
|
+
spec.add_development_dependency "rspec"
|
30
|
+
spec.add_development_dependency "fuubar"
|
31
|
+
spec.add_development_dependency "guard"
|
32
|
+
spec.add_development_dependency "guard-rspec"
|
33
|
+
spec.add_development_dependency "guard-spork"
|
34
|
+
spec.add_development_dependency "spork"
|
35
|
+
spec.add_development_dependency "json_spec"
|
36
|
+
end
|
data/lib/buff-config.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'buff/config'
|
data/lib/buff/config.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'buff/extensions'
|
2
|
+
require 'varia_model'
|
3
|
+
require 'forwardable'
|
4
|
+
|
5
|
+
module Buff
|
6
|
+
require_relative 'config/errors'
|
7
|
+
|
8
|
+
module Config
|
9
|
+
class Base
|
10
|
+
extend Forwardable
|
11
|
+
include VariaModel
|
12
|
+
|
13
|
+
attr_accessor :path
|
14
|
+
|
15
|
+
def_delegator :to_hash, :slice
|
16
|
+
def_delegator :to_hash, :slice!
|
17
|
+
def_delegator :to_hash, :extract!
|
18
|
+
|
19
|
+
# @param [String] path
|
20
|
+
# @param [Hash] attributes
|
21
|
+
def initialize(path = nil, attributes = {})
|
22
|
+
@path = File.expand_path(path) if path
|
23
|
+
|
24
|
+
mass_assign(attributes)
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_hash
|
28
|
+
super.deep_symbolize_keys
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'buff/config'
|
2
|
+
|
3
|
+
module Buff
|
4
|
+
module Config
|
5
|
+
class JSON < Config::Base
|
6
|
+
class << self
|
7
|
+
# @param [String] data
|
8
|
+
#
|
9
|
+
# @return [Buff::Config::JSON]
|
10
|
+
def from_json(data)
|
11
|
+
new.from_json(data)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @param [String] path
|
15
|
+
#
|
16
|
+
# @raise [Buff::Errors::ConfigNotFound]
|
17
|
+
#
|
18
|
+
# @return [Buff::Config::JSON]
|
19
|
+
def from_file(path)
|
20
|
+
path = File.expand_path(path)
|
21
|
+
data = File.read(path)
|
22
|
+
new(path).from_json(data)
|
23
|
+
rescue TypeError, Errno::ENOENT, Errno::EISDIR
|
24
|
+
raise Errors::ConfigNotFound, "No configuration found at: '#{path}'"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# @see {VariaModel#from_json}
|
29
|
+
#
|
30
|
+
# @raise [Buff::Errors::InvalidConfig]
|
31
|
+
#
|
32
|
+
# @return [Buff::Config::JSON]
|
33
|
+
def from_json(*args)
|
34
|
+
super
|
35
|
+
rescue JSON::ParseError => ex
|
36
|
+
raise Errors::InvalidConfig, ex
|
37
|
+
end
|
38
|
+
|
39
|
+
def save(destination = self.path)
|
40
|
+
if destination.nil?
|
41
|
+
raise Errors::ConfigSaveError, "Cannot save configuration without a destination. Provide one to save or set one on the object."
|
42
|
+
end
|
43
|
+
|
44
|
+
FileUtils.mkdir_p(File.dirname(destination))
|
45
|
+
File.open(destination, 'w+') do |f|
|
46
|
+
f.write(self.to_json(pretty: true))
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Reload the current configuration file from disk
|
51
|
+
#
|
52
|
+
# @return [Buff::Config::JSON]
|
53
|
+
def reload
|
54
|
+
mass_assign(self.class.from_file(path).to_hash)
|
55
|
+
self
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'buff/config/json'
|
3
|
+
|
4
|
+
describe Buff::Config::JSON do
|
5
|
+
let(:json) do
|
6
|
+
%(
|
7
|
+
{
|
8
|
+
"name": "reset",
|
9
|
+
"job": "programmer",
|
10
|
+
"status": "awesome"
|
11
|
+
}
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "ClassMethods" do
|
16
|
+
subject do
|
17
|
+
Class.new(Buff::Config::JSON) do
|
18
|
+
attribute :name, required: true
|
19
|
+
attribute :job
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "::from_json" do
|
24
|
+
it "returns an instance of the inheriting class" do
|
25
|
+
expect(subject.from_json(json)).to be_a(subject)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "assigns values for each defined attribute" do
|
29
|
+
config = subject.from_json(json)
|
30
|
+
|
31
|
+
expect(config[:name]).to eql("reset")
|
32
|
+
expect(config[:job]).to eql("programmer")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "::from_file" do
|
37
|
+
let(:file) { tmp_path.join("test_config.json").to_s }
|
38
|
+
|
39
|
+
before(:each) do
|
40
|
+
File.open(file, "w") { |f| f.write(json) }
|
41
|
+
end
|
42
|
+
|
43
|
+
it "returns an instance of the inheriting class" do
|
44
|
+
expect(subject.from_file(file)).to be_a(subject)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "sets the object's filepath to the path of the loaded file" do
|
48
|
+
expect(subject.from_file(file).path).to eql(file)
|
49
|
+
end
|
50
|
+
|
51
|
+
context "given a file that does not exist" do
|
52
|
+
it "raises a Buff::Errors::ConfigNotFound error" do
|
53
|
+
expect { subject.from_file(tmp_path.join("asdf.txt")) }.to raise_error(Buff::Errors::ConfigNotFound)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
subject do
|
60
|
+
Class.new(Buff::Config::JSON) do
|
61
|
+
attribute :name, required: true
|
62
|
+
attribute :job
|
63
|
+
end.new
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#to_json" do
|
67
|
+
before(:each) do
|
68
|
+
subject.name = "reset"
|
69
|
+
subject.job = "programmer"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "returns JSON with key values for each attribute" do
|
73
|
+
hash = parse_json(subject.to_json)
|
74
|
+
|
75
|
+
expect(hash).to have_key("name")
|
76
|
+
expect(hash["name"]).to eql("reset")
|
77
|
+
expect(hash).to have_key("job")
|
78
|
+
expect(hash["job"]).to eql("programmer")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "#from_json" do
|
83
|
+
it "returns an instance of the updated class" do
|
84
|
+
expect(subject.from_json(json)).to be_a(Buff::Config::JSON)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "assigns values for each defined attribute" do
|
88
|
+
config = subject.from_json(json)
|
89
|
+
|
90
|
+
expect(config.name).to eql("reset")
|
91
|
+
expect(config.job).to eql("programmer")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#save" do
|
96
|
+
it "raises a ConfigSaveError if no path is set or given" do
|
97
|
+
subject.path = nil
|
98
|
+
|
99
|
+
expect { subject.save }.to raise_error(Buff::Errors::ConfigSaveError)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "#reload" do
|
104
|
+
before(:each) do
|
105
|
+
subject.path = tmp_path.join('tmpconfig.json').to_s
|
106
|
+
subject.save
|
107
|
+
end
|
108
|
+
|
109
|
+
it "returns self" do
|
110
|
+
expect(subject.reload).to eql(subject)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "updates the contents of self from disk" do
|
114
|
+
original = subject.class.from_file(subject.path)
|
115
|
+
subject.job = "programmer"
|
116
|
+
subject.save
|
117
|
+
|
118
|
+
expect(original.job).to be_nil
|
119
|
+
original.reload
|
120
|
+
expect(original.job).to eql("programmer")
|
121
|
+
end
|
122
|
+
|
123
|
+
it "raises ConfigNotFound if the path is nil" do
|
124
|
+
subject.path = nil
|
125
|
+
|
126
|
+
expect { subject.reload }.to raise_error(Buff::Errors::ConfigNotFound)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Buff::Config::Base do
|
4
|
+
subject { Class.new(described_class).new }
|
5
|
+
|
6
|
+
describe "#to_hash" do
|
7
|
+
it "returns a Hash" do
|
8
|
+
expect(subject.to_hash).to be_a(Hash)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "contains all of the attributes" do
|
12
|
+
subject.set_attribute(:something, "value")
|
13
|
+
|
14
|
+
expect(subject.to_hash).to have_key(:something)
|
15
|
+
expect(subject.to_hash[:something]).to eql("value")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#slice" do
|
20
|
+
before(:each) do
|
21
|
+
subject.set_attribute(:one, nested: "value")
|
22
|
+
subject.set_attribute(:two, nested: "other")
|
23
|
+
@sliced = subject.slice(:one)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns a Hash" do
|
27
|
+
expect(@sliced).to be_a(Hash)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "contains just the sliced elements" do
|
31
|
+
expect(@sliced).to have(1).item
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'rspec'
|
4
|
+
require 'buff/ruby_engine'
|
5
|
+
require 'json_spec'
|
6
|
+
|
7
|
+
def setup_rspec
|
8
|
+
RSpec.configure do |config|
|
9
|
+
config.include JsonSpec::Helpers
|
10
|
+
|
11
|
+
config.expect_with :rspec do |c|
|
12
|
+
c.syntax = :expect
|
13
|
+
end
|
14
|
+
|
15
|
+
config.mock_with :rspec
|
16
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
17
|
+
config.filter_run focus: true
|
18
|
+
config.run_all_when_everything_filtered = true
|
19
|
+
|
20
|
+
config.before(:each) { clean_tmp_path }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def app_root
|
25
|
+
@app_root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
26
|
+
end
|
27
|
+
|
28
|
+
def clean_tmp_path
|
29
|
+
FileUtils.rm_rf(tmp_path)
|
30
|
+
FileUtils.mkdir_p(tmp_path)
|
31
|
+
end
|
32
|
+
|
33
|
+
def tmp_path
|
34
|
+
app_root.join('spec', 'tmp')
|
35
|
+
end
|
36
|
+
|
37
|
+
if Buff::RubyEngine.jruby?
|
38
|
+
require 'buff/config'
|
39
|
+
setup_rspec
|
40
|
+
else
|
41
|
+
require 'spork'
|
42
|
+
|
43
|
+
Spork.prefork { setup_rspec }
|
44
|
+
Spork.each_run { require 'buff/config' }
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,278 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: buff-config
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jamie Winsor
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: varia_model
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.1'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.1'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: buff-extensions
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.3'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.3'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: buff-ruby_engine
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.1'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.1'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: thor
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.18.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.18.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: bundler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '1.3'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '1.3'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rake
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rspec
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: fuubar
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: guard
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: guard-rspec
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: guard-spork
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: spork
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ! '>='
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
type: :development
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: json_spec
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
type: :development
|
215
|
+
prerelease: false
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ! '>='
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
description: A simple configuration class
|
223
|
+
email:
|
224
|
+
- reset@riotgames.com
|
225
|
+
executables: []
|
226
|
+
extensions: []
|
227
|
+
extra_rdoc_files: []
|
228
|
+
files:
|
229
|
+
- .gitignore
|
230
|
+
- .ruby-version
|
231
|
+
- .travis.yml
|
232
|
+
- CONTRIBUTING.md
|
233
|
+
- Gemfile
|
234
|
+
- Guardfile
|
235
|
+
- LICENSE
|
236
|
+
- README.md
|
237
|
+
- Thorfile
|
238
|
+
- buff-config.gemspec
|
239
|
+
- lib/buff-config.rb
|
240
|
+
- lib/buff/config.rb
|
241
|
+
- lib/buff/config/errors.rb
|
242
|
+
- lib/buff/config/json.rb
|
243
|
+
- lib/buff/config/version.rb
|
244
|
+
- spec/buff/config/json_spec.rb
|
245
|
+
- spec/buff/config_spec.rb
|
246
|
+
- spec/spec_helper.rb
|
247
|
+
homepage: https://github.com/RiotGames/buff-config
|
248
|
+
licenses:
|
249
|
+
- Apache 2.0
|
250
|
+
post_install_message:
|
251
|
+
rdoc_options: []
|
252
|
+
require_paths:
|
253
|
+
- lib
|
254
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
255
|
+
none: false
|
256
|
+
requirements:
|
257
|
+
- - ! '>='
|
258
|
+
- !ruby/object:Gem::Version
|
259
|
+
version: 1.9.2
|
260
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
261
|
+
none: false
|
262
|
+
requirements:
|
263
|
+
- - ! '>='
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: '0'
|
266
|
+
segments:
|
267
|
+
- 0
|
268
|
+
hash: -1013428391451847174
|
269
|
+
requirements: []
|
270
|
+
rubyforge_project:
|
271
|
+
rubygems_version: 1.8.23
|
272
|
+
signing_key:
|
273
|
+
specification_version: 3
|
274
|
+
summary: A simple configuration class
|
275
|
+
test_files:
|
276
|
+
- spec/buff/config/json_spec.rb
|
277
|
+
- spec/buff/config_spec.rb
|
278
|
+
- spec/spec_helper.rb
|