bib-vagrant 0.1.3 → 0.1.4

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: 321c5c79c1c30f4f74a06e99065d2d3efd47ee03
4
- data.tar.gz: 5065e81e14aa4a075bdb949ddf4ae4e3164b3756
3
+ metadata.gz: 7133007baecfa23b1110bb1da199c3287ca47c24
4
+ data.tar.gz: cdd0a1c46083cf22fe43e000217a2621668ede60
5
5
  SHA512:
6
- metadata.gz: 81fe49a54adf89136038fb269dd716e245b28bb35b96750da69cd53d7e7b59420fbe5266d3891cbd827c84b5d17cf3389c09c9387d4e4a855d09e650a4328401
7
- data.tar.gz: 5b0d4ed21cd034e2dc9f75948f5e04f7212062064ec61ae9f241e4adb0c31bbfb2709803b6fcc7592089bab0230a2dd2bff6cbc93687b479575dc799c81ea6f2
6
+ metadata.gz: 152b6356535d41c0bf127a49fce4507b24d568916d59f66ffdc81948526d5af668285202eea17960030f6ab38c1cc454149050c982ea4eb617c6b613836fc323
7
+ data.tar.gz: 0bc5861591fc18e20184ea6ee386cd10543c65053eb773d3f9796c3436eecd877ece2c60aba8e370cc3d7b196c4d04a12f66b2328eb41d171b5d1c3f4c2e41fc
data/README.md CHANGED
@@ -117,7 +117,30 @@ npm_userpass: <npm or github authentication token>
117
117
 
118
118
  NOTE: the npm_registry should be in the format of 'http[s]://host.domain.tld/' - The trailing slash is important
119
119
 
120
+ ## Developing and Testing
121
+
122
+ Make sure you are using a Bundler version which is compatible with Vagrant which comes from GitHub like defined here:
123
+
124
+ ```
125
+ group :development do
126
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
127
+ end
128
+ ```
129
+
130
+ Bundler version 1.7.15 works fine and can be installed like this:
131
+
132
+ ```
133
+ gem install bundler -v '~> 1.7.0'
134
+ ```
135
+
136
+ Then, when you want to test Bib Vagrant use:
137
+
138
+ ```
139
+ bundle _1.7.15_ exec vagrant
140
+ ```
141
+
142
+ Happy developing and testing.
143
+
120
144
  ## Contributing
121
145
 
122
146
  See [Contributing](CONTRIBUTING.md)
123
-
@@ -1,93 +1,175 @@
1
1
  require 'yaml'
2
2
 
3
+
4
+ class String
5
+ def red
6
+ "\033[31m#{self}\033[0m"
7
+ end
8
+ end
9
+
10
+
3
11
  module Bib
4
12
  module Vagrant
5
- class Config
6
- @@home_dir = nil
7
- @@verbose = true
13
+ class << self
14
+ # Checks for plugins and takes a plugin list plus optional true/false for checking some
15
+ # _esoteric_ plugin constellation, see Bib::Vagrant#check_esoteric_plugin_constellation.
16
+ #
17
+ # ==== Example where given plugins are all mandatory (plugins are given as an array)
18
+ #
19
+ # Bib::Vagrant.check_plugins(['landrush', 'vagrant-hosts'])
20
+ #
21
+ # ==== Example where a plugin may be mandatory but doesn't need to (plugins are given as a hash)
22
+ #
23
+ # Bib::Vagrant.check_plugins(
24
+ # {
25
+ # 'landrush' => true,
26
+ # 'vagrant-hosts' => false
27
+ # },
28
+ # true
29
+ # )
30
+ def check_plugins(plugins, check_esoteric_plugin_constellation = true)
31
+ complete = true
32
+
33
+ plugins.each do |plugin, mandatory|
34
+ next if ::Vagrant.has_plugin?(plugin)
35
+ next if ENV['VAGRANT_CI']
36
+ puts "!!! - You are missing a plugin: #{plugin}"
37
+ puts '---'
38
+ puts "### - Please run: vagrant plugin install #{plugin}"
39
+ puts '---'
40
+ puts "!!! - Read more here: #{plugin_list[plugin]}"
41
+ complete = false if mandatory
42
+ end
8
43
 
9
- def initialize(home = '~', verbose = true)
10
- @@home = home
11
- @@verbose = verbose
12
- end
44
+ if check_esoteric_plugin_constellation
45
+ complete = self.check_esoteric_plugin_constellation ? complete : false
46
+ end
13
47
 
14
- def get
15
- vagrantconfig = get_defaults
48
+ complete
49
+ end
16
50
 
17
- begin
18
- localconfigfile = File.open(get_path, 'r')
19
- vagrantconfig.merge!(YAML.load(localconfigfile.read))
20
- rescue Errno::ENOENT
21
- puts 'WARNING: No vagrant user-config found, using default cookbook path' if @@verbose
22
- create(get_path, vagrantconfig)
51
+ # Checks for some _esoteric_ plugin constellation.
52
+ #
53
+ # Please follow the output instructions when the _esoteric_ constellation is met.
54
+ def check_esoteric_plugin_constellation
55
+ complete = true
56
+
57
+ if ::Vagrant.has_plugin?('landrush') && !Gem.loaded_specs['celluloid'].nil?
58
+ if Gem.loaded_specs['celluloid'].version.to_s == '0.16.1'
59
+ puts 'This is an esoteric issue for vagrant 1.7.4/landrush 18 and virtualbox 5.x'
60
+ puts 'celluloid is 0.16.1'
61
+ puts 'Please do the following on your HOST OS'
62
+ puts ' export GEM_HOME=~/.vagrant.d/gems'
63
+ puts ' gem uninstall celluloid -v 0.16.1'
64
+ puts ' gem install celluloid -v 0.16.0'
65
+ complete = false
66
+ end
23
67
  end
24
68
 
25
- vagrantconfig
69
+ complete
26
70
  end
27
71
 
28
- def has?
29
- File.exist?(get_path)
72
+ # Returns an array which lists plugins to check where index is the name of the plugin and value
73
+ # is the url where the user can get more information about it.
74
+ def plugin_list
75
+ {
76
+ 'landrush' => 'https://github.com/phinze/landrush',
77
+ 'vagrant-hosts' => 'https://github.com/adrienthebo/vagrant-hosts',
78
+ 'vagrant-faster' => 'https://github.com/rdsubhas/vagrant-faster#how-much-does-it-allocate',
79
+ 'vagrant-cachier' => 'https://github.com/easybib/issues/wiki/Knowledgebase:-Global-Vagrant-setup#enable-vagrant-cachier-globally',
80
+ 'bib-vagrant' => 'See https://github.com/easybiblabs/bib-vagrant/blob/master/README.md'
81
+ }
30
82
  end
31
83
 
32
- def get_path
33
- File.expand_path("#{@@home}/.config/easybib/vagrantdefault.yml")
84
+ def init_github_hostkey(machine)
85
+ machine.vm.provision 'shell' do |s|
86
+ s.inline = 'ssh -T git@github.com -o StrictHostKeyChecking=no; exit 0'
87
+ s.privileged = false
88
+ end
34
89
  end
35
90
 
36
- def validate!(config)
37
- current_config_keys = config.keys
38
-
39
- get_defaults.keys.each do |required_key|
40
- fail "Missing #{required_key}!" unless current_config_keys.include?(required_key)
91
+ def check_gatling
92
+ unless ::Vagrant.has_plugin?('vagrant-gatling-rsync')
93
+ puts "\nERROR: you're using rsync - you'll need the vagrant-gatling-rsync plugin\n"
94
+ puts 'do'
95
+ puts "\n\tvagrant plugin install vagrant-gatling-rsync\n\n"
96
+ puts "(also: see the README for how to increase the inotify limit)\n"
97
+ exit 1
41
98
  end
99
+ puts "\nNOTE: you're using rsync, run\n\n\tvagrant gatling-rsync-auto\n\nto auto-sync the shared folders\n\n"
100
+ end
42
101
 
43
- errors = []
44
- log_level = %w(debug info warn error fatal)
45
- bool = [TrueClass, FalseClass]
46
-
47
- cookbook_path = File.expand_path(config['cookbook_path'])
48
-
49
- errors << 'nfs: must be a boolean' unless bool.include?(config['nfs'].class)
50
- errors << 'gui: must be a boolean' unless bool.include?(config['gui'].class)
51
- errors << 'cookbook_path: does not exist' unless File.directory?(cookbook_path)
52
- errors << "chef_log_level: must be one of #{log_level.join}" unless log_level.include?(config['chef_log_level'])
102
+ def install_node_artifacts(machine, node_uri)
103
+ machine.vm.provision 'shell', inline: <<-SHELL
104
+ echo "grabbing /usr/lib/node_modules.."
105
+ sudo wget --continue -O /tmp/usr_node.tgz #{node_uri}
106
+ sudo mkdir -p /usr/lib/node_modules
107
+ sudo tar --overwrite -zxof /tmp/usr_node.tgz -C /usr/lib/
108
+ echo ".. done."
109
+ SHELL
110
+ end
53
111
 
54
- unless config['additional_json'].empty?
55
- errors << 'additional_json: must be empty or valid json' unless is_valid_json?(config['additional_json'])
112
+ def add_composertoken_to_dna(dna, vagrantconfig)
113
+ if vagrantconfig.key?('composer_github_token') && !vagrantconfig['composer_github_token'].empty?
114
+ puts "[info] Replacing OAuth2 Token for composer with user token: #{vagrantconfig['composer_github_token']}"
115
+ dna['composer']['oauth_key'] = vagrantconfig['composer_github_token']
116
+ else
117
+ puts "[error] You don't have a token setup in!".red
118
+ puts ' 1. https://github.com/settings/tokens (with repo scope only)'
119
+ puts ' 2. Add this line to ~/.config/easybib/vagrantdefault.yml:'
120
+ puts ' composer_github_token: your-token-here'
121
+ puts ''
122
+ puts "Run `vagrant #{ARGV[0]}` again!"
123
+ exit
56
124
  end
125
+ dna
126
+ end
57
127
 
58
- return true if errors.count == 0
59
-
60
- fail "Errors: #{errors.join(', ')}"
128
+ def prepare_app_settings(vagrantconfig, machine, dna, applicationlist = 'applications')
129
+ dna = add_composertoken_to_dna(dna, vagrantconfig)
130
+ dna['vagrant'][applicationlist].each do |app, app_config|
131
+ vagrant_share = File.expand_path(app_config['app_root_location'])
132
+ host_folder = "#{File.dirname(__FILE__)}/sites/#{app}"
133
+ if vagrantconfig['nfs']
134
+ machine.vm.synced_folder host_folder, vagrant_share, type: 'nfs', mount_options: ['nolock,vers=3,udp,noatime,actimeo=1']
135
+ elsif vagrantconfig['rsync']
136
+ machine.vm.synced_folder host_folder, vagrant_share, type: 'rsync'
137
+ else
138
+ machine.vm.synced_folder host_folder, vagrant_share, owner: 'vagrant'
139
+ end
140
+ end
141
+ dna
61
142
  end
62
143
 
63
- private
144
+ def setup_landrush_hostnames(config, host_ip, dna, applicationlist = 'applications')
145
+ hosts_list = []
64
146
 
65
- def create(localconfigpath, vagrantconfig)
66
- FileUtils.mkdir_p(File.dirname(localconfigpath))
67
- File.open(localconfigpath, 'w+') do |file|
68
- file.write(vagrantconfig.to_yaml)
69
- puts "INFO: Created default vagrant user-config in #{localconfigpath}" if @@verbose
70
- puts 'INFO: You probably want to fix the path to the cookbooks in this file.' if @@verbose
147
+ dna['vagrant'][applicationlist].each do |_app, app_config|
148
+ # Populate Landrush and vagrant-hosts
149
+ host_name = "#{app_config['domain_name']}"
150
+ hosts_list.push(host_name)
151
+ config.landrush.host host_name, host_ip
71
152
  end
72
- rescue
73
- puts "WARNING: Unable to create default #{localconfigpath} - please do it manually." if @@verbose
74
- end
75
153
 
76
- def get_defaults
77
- {
78
- 'nfs' => false,
79
- 'cookbook_path' => '~/Sites/easybib/cookbooks',
80
- 'chef_log_level' => 'debug',
81
- 'additional_json' => '{}',
82
- 'gui' => false
83
- }
154
+ # This loop will actually populate the /etc/hsots on the guest and host OS via vagrant-hosts
155
+ hosts_flat = hosts_list.map { |name| name.split(' ') }.flatten.uniq
156
+ config.vm.provision :hosts do |provisioner|
157
+ # Add a single hostname
158
+ provisioner.add_host host_ip, hosts_flat
159
+ end
84
160
  end
85
161
 
86
- def is_valid_json?(json)
87
- JSON.parse(json)
88
- return true
89
- rescue JSON::ParserError
90
- false
162
+ def default_provision(machine)
163
+ # remove locale passing via ssh also generate a default locale on the guest OS
164
+ machine.vm.provision 'shell', inline: 'sed -i "s/@AcceptEnv LANG LC_\*/# AcceptEnv LANG LC_\*/g" /etc/ssh/sshd_config'
165
+ machine.vm.provision 'shell', inline: 'locale-gen en_US.UTF-8'
166
+
167
+ # uncomment the next line and re-run provision if you end up with a
168
+ # "Failed to fetch mirror://mirrors.ubuntu.com/mirrors.txt" error:
169
+ # machine.vm.provision "shell", inline: "apt-spy2 fix --commit --launchpad --country=US"
170
+ # machine.vm.provision "shell", inline: "apt-spy2 fix --commit --launchpad --country=Germany"
171
+
172
+ machine.vm.provision 'shell', inline: 'apt-get update -y'
91
173
  end
92
174
  end
93
175
  end
@@ -0,0 +1,94 @@
1
+ require 'yaml'
2
+
3
+ module Bib
4
+ module Vagrant
5
+ class Config
6
+ @@home_dir = nil
7
+ @@verbose = true
8
+
9
+ def initialize(home = '~', verbose = true)
10
+ @@home = home
11
+ @@verbose = verbose
12
+ end
13
+
14
+ def get
15
+ vagrantconfig = get_defaults
16
+
17
+ begin
18
+ localconfigfile = File.open(get_path, 'r')
19
+ vagrantconfig.merge!(YAML.load(localconfigfile.read))
20
+ rescue Errno::ENOENT
21
+ puts 'WARNING: No vagrant user-config found, using default cookbook path' if @@verbose
22
+ create(get_path, vagrantconfig)
23
+ end
24
+
25
+ vagrantconfig
26
+ end
27
+
28
+ def has?
29
+ File.exist?(get_path)
30
+ end
31
+
32
+ def get_path
33
+ File.expand_path("#{@@home}/.config/easybib/vagrantdefault.yml")
34
+ end
35
+
36
+ def validate!(config)
37
+ current_config_keys = config.keys
38
+
39
+ get_defaults.keys.each do |required_key|
40
+ fail "Missing #{required_key}!" unless current_config_keys.include?(required_key)
41
+ end
42
+
43
+ errors = []
44
+ log_level = %w(debug info warn error fatal)
45
+ bool = [TrueClass, FalseClass]
46
+
47
+ cookbook_path = File.expand_path(config['cookbook_path'])
48
+
49
+ errors << 'nfs: must be a boolean' unless bool.include?(config['nfs'].class)
50
+ errors << 'gui: must be a boolean' unless bool.include?(config['gui'].class)
51
+ errors << 'cookbook_path: does not exist' unless File.directory?(cookbook_path)
52
+ errors << "chef_log_level: must be one of #{log_level.join}" unless log_level.include?(config['chef_log_level'])
53
+
54
+ unless config['additional_json'].empty?
55
+ errors << 'additional_json: must be empty or valid json' unless is_valid_json?(config['additional_json'])
56
+ end
57
+
58
+ return true if errors.count == 0
59
+
60
+ fail "Errors: #{errors.join(', ')}"
61
+ end
62
+
63
+ private
64
+
65
+ def create(localconfigpath, vagrantconfig)
66
+ FileUtils.mkdir_p(File.dirname(localconfigpath))
67
+ File.open(localconfigpath, 'w+') do |file|
68
+ file.write(vagrantconfig.to_yaml)
69
+ puts "INFO: Created default vagrant user-config in #{localconfigpath}" if @@verbose
70
+ puts 'INFO: You probably want to fix the path to the cookbooks in this file.' if @@verbose
71
+ end
72
+ rescue
73
+ puts "WARNING: Unable to create default #{localconfigpath} - please do it manually." if @@verbose
74
+ end
75
+
76
+ def get_defaults
77
+ {
78
+ 'nfs' => false,
79
+ 'cookbook_path' => '~/Sites/easybib/cookbooks',
80
+ 'chef_log_level' => 'debug',
81
+ 'additional_json' => '{}',
82
+ 'gui' => false
83
+ }
84
+ end
85
+
86
+ def is_valid_json?(json)
87
+ JSON.parse(json)
88
+ return true
89
+ rescue JSON::ParserError
90
+ false
91
+ end
92
+ end
93
+ end
94
+ end
@@ -18,6 +18,12 @@ end
18
18
  class BibConfigurePlugin < Vagrant.plugin('2')
19
19
  name 'NPM configuration Provisioner'
20
20
 
21
+ # Create a local config, unless it already exists
22
+ action_hook(:environment_load) do |hook|
23
+ config = Bib::Vagrant::Config.new
24
+ config.get # Creates the config file unless existing already and the gets it
25
+ end
26
+
21
27
  # This plugin provides a provisioner called unix_reboot.
22
28
  provisioner 'bib_configure_npm' do
23
29
  # Create a provisioner.
data/lib/bib/vagrant.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require_relative 'version'
2
2
  require_relative 'bib_vagrant'
3
+ require_relative 'bib_vagrant_config'
3
4
  require_relative 'bib_vagrant_npm_provisioner'
4
5
 
5
6
  require 'thor'
data/lib/bib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Bib
2
2
  module Vagrant
3
- VERSION = '0.1.3'
3
+ VERSION = '0.1.4'
4
4
  end
5
5
  end
data/test/config_test.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'bib/bib_vagrant'
2
+ require 'bib/bib_vagrant_config'
2
3
 
3
4
  class ConfigTest < Minitest::Test
4
5
  @@fixture_dir = nil
metadata CHANGED
@@ -1,127 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bib-vagrant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
- - '''tillk'','
8
- - '''fh'','
9
- - '''gilleyj'''
7
+ - "'tillk',"
8
+ - "'fh',"
9
+ - "'gilleyj'"
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-13 00:00:00.000000000 Z
13
+ date: 2016-02-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: thor
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: 0.18.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - '>='
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 0.18.1
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: colored
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '>='
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
35
  version: '1.2'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '>='
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: '1.2'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rest_client
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: json
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - '>='
61
+ - - ">="
62
62
  - !ruby/object:Gem::Version
63
63
  version: '0'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - '>='
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: bundler
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ~>
75
+ - - "~>"
76
76
  - !ruby/object:Gem::Version
77
77
  version: '1.5'
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ~>
82
+ - - "~>"
83
83
  - !ruby/object:Gem::Version
84
84
  version: '1.5'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rake
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - '>='
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - '>='
96
+ - - ">="
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: minitest
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ~>
103
+ - - "~>"
104
104
  - !ruby/object:Gem::Version
105
105
  version: 5.0.8
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ~>
110
+ - - "~>"
111
111
  - !ruby/object:Gem::Version
112
112
  version: 5.0.8
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: coveralls
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - '>='
117
+ - - ">="
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  description: A rubygem to centralize configuration and setup in every project's Vagrantfile
@@ -132,8 +132,8 @@ executables:
132
132
  extensions: []
133
133
  extra_rdoc_files: []
134
134
  files:
135
- - .gitignore
136
- - .travis.yml
135
+ - ".gitignore"
136
+ - ".travis.yml"
137
137
  - CONTRIBUTING.md
138
138
  - Gemfile
139
139
  - LICENSE.txt
@@ -143,6 +143,7 @@ files:
143
143
  - bib-vagrant.gemspec
144
144
  - bin/bib-vagrant
145
145
  - lib/bib/bib_vagrant.rb
146
+ - lib/bib/bib_vagrant_config.rb
146
147
  - lib/bib/bib_vagrant_npm_provisioner.rb
147
148
  - lib/bib/plugin.rb
148
149
  - lib/bib/vagrant.rb
@@ -158,20 +159,19 @@ require_paths:
158
159
  - lib
159
160
  required_ruby_version: !ruby/object:Gem::Requirement
160
161
  requirements:
161
- - - '>='
162
+ - - ">="
162
163
  - !ruby/object:Gem::Version
163
164
  version: '0'
164
165
  required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  requirements:
166
- - - '>='
167
+ - - ">="
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
171
  rubyforge_project:
171
- rubygems_version: 2.0.14
172
+ rubygems_version: 2.4.8
172
173
  signing_key:
173
174
  specification_version: 4
174
175
  summary: Centralize configuration and setup
175
176
  test_files:
176
177
  - test/config_test.rb
177
- has_rdoc: