rundock 0.5.4 → 0.5.7

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: be69d1204087ff6b81446b6303ec46351a15324b
4
- data.tar.gz: c8d4edf9535b4495e8c57f3b0186baabba97fcbb
3
+ metadata.gz: d8a23e3b42a6d06189c3ccedafbce905f5216e77
4
+ data.tar.gz: e8556f0984bb264a72ec144ff3995a4879f09d70
5
5
  SHA512:
6
- metadata.gz: 4a11d81638882d166d039e394e2efd3db08d01d5d24fa3f5e5e397cdb2101091b7a1bd14f02b601d3a22c62075e7a0d3ae63bae44fe2bc59007b2e194992439f
7
- data.tar.gz: 1d2bc6ac9a8d3a1545161138fa5d599dd2556fb10199370f4ad6685d798c0a39cf6f6c3f60663858fab5994abb6467140d5bbd74945c95d0ef49c3df7bb3344d
6
+ metadata.gz: d98ebcc2c7b3dcf7ba6fa71d0c512f3d103a0bb0c823f6149527ee5c95cbf1073fb51453427ce4550b7b4ff6f2ed82cf358f17b845f3e54452cf5bc80df82309
7
+ data.tar.gz: 59f74b1b9a5e75559f19879669aa628c60c1f764167f05569724e5b72c2cf78eb285d0f8262e5b11a763d6b50b60c629f229eb385c4f528603598ed9e72a66f6
data/.rubocop.yml CHANGED
@@ -51,5 +51,11 @@ Style/FormatString:
51
51
  Style/RegexpLiteral:
52
52
  Enabled: false
53
53
 
54
+ Style/Alias:
55
+ Enabled: false
56
+
57
+ Style/MutableConstant:
58
+ Enabled: false
59
+
54
60
  Lint/UnusedMethodArgument:
55
61
  Enabled: false
data/Rakefile CHANGED
@@ -67,11 +67,11 @@ def do_rundock_scenarios(platform)
67
67
  end
68
68
 
69
69
  Dir.glob(scenario_files_pattern).each do |scenario|
70
- if scenario =~ /use_default_ssh/ && platform != 'localhost'
71
- default_ssh_opt = " -d #{base_dir}/integration_default_ssh.yml"
72
- else
73
- default_ssh_opt = ''
74
- end
70
+ default_ssh_opt = if scenario =~ /use_default_ssh/ && platform != 'localhost'
71
+ " -d #{base_dir}/integration_default_ssh.yml"
72
+ else
73
+ ''
74
+ end
75
75
 
76
76
  options = ''
77
77
  if scenario =~ %r{^*scenarios/(.*hooks_by_option)_scenario.yml$}
data/circle.yml CHANGED
@@ -1,6 +1,8 @@
1
1
  machine:
2
2
  services:
3
3
  - docker
4
+ ruby:
5
+ version: 2.1.1
4
6
 
5
7
  dependencies:
6
8
  cache_directories:
@@ -65,8 +65,8 @@ module Rundock
65
65
  Logger.formatter.indent do
66
66
  Logger.debug("cwd: #{exec_options[:cwd]}") if exec_options[:cwd]
67
67
  Logger.debug("sudo: #{exec_options[:sudo]}") if exec_options[:sudo]
68
- Logger.error("#{result.stderr.strip}") unless result.stderr.strip.blank?
69
- Logger.info("#{result.stdout.strip}") unless result.stdout.strip.blank?
68
+ Logger.error(result.stderr.strip) unless result.stderr.strip.blank?
69
+ Logger.info(result.stdout.strip) unless result.stdout.strip.blank?
70
70
  Logger.debug("errexit: #{exec_options[:errexit]}")
71
71
  Logger.debug("exit status: #{exit_status}")
72
72
  end
@@ -111,11 +111,11 @@ module Rundock
111
111
  private
112
112
 
113
113
  def parse(options)
114
- if options[:ssh_config] && FileTest.exists?(options[:ssh_config])
115
- ssh_opts = Net::SSH::Config.for(options[:host], [options[:ssh_config]])
116
- else
117
- ssh_opts = Net::SSH::Config.for(options[:host])
118
- end
114
+ ssh_opts = if options[:ssh_config] && FileTest.exists?(options[:ssh_config])
115
+ Net::SSH::Config.for(options[:host], [options[:ssh_config]])
116
+ else
117
+ Net::SSH::Config.for(options[:host])
118
+ end
119
119
 
120
120
  # priority = node_attributes > cli options
121
121
  ssh_opts[:host_name] = options[:host]
@@ -55,14 +55,14 @@ module Rundock
55
55
  end
56
56
 
57
57
  def parse_backend_type
58
- if localhost? &&
59
- !@node_info[@nodename.to_sym][:ssh_opts][:port] &&
60
- !@node_info[@nodename.to_sym][:ssh_opts][:user] &&
61
- !@node_info[@nodename.to_sym][:ssh_opts][:ssh_config]
62
- backend_type = :local
63
- else
64
- backend_type = :ssh
65
- end
58
+ backend_type = if localhost? &&
59
+ !@node_info[@nodename.to_sym][:ssh_opts][:port] &&
60
+ !@node_info[@nodename.to_sym][:ssh_opts][:user] &&
61
+ !@node_info[@nodename.to_sym][:ssh_opts][:ssh_config]
62
+ :local
63
+ else
64
+ :ssh
65
+ end
66
66
 
67
67
  backend_type
68
68
  end
@@ -3,7 +3,9 @@ require 'yaml'
3
3
  module Rundock
4
4
  module Builder
5
5
  class DefaultSshBuilder < Base
6
- PRESET_SSH_OPTIONS_DEFAULT_FILE_PATH = "#{Gem::Specification.find_by_path('rundock').full_gem_path}/default_ssh.yml"
6
+ RUNDOCK_PACKAGE_PATH = Gem::Specification.find_by_path('rundock')
7
+ PRESET_SSH_OPTIONS_DEFAULT_ROOT = RUNDOCK_PACKAGE_PATH.nil? ? '.' : RUNDOCK_PACKAGE_PATH.full_gem_path
8
+ PRESET_SSH_OPTIONS_DEFAULT_FILE_PATH = "#{PRESET_SSH_OPTIONS_DEFAULT_ROOT}/default_ssh.yml"
7
9
 
8
10
  def initialize(options)
9
11
  super(options)
@@ -12,11 +14,11 @@ module Rundock
12
14
  def build
13
15
  opts = {}
14
16
 
15
- if @options[:default_ssh_opts] && FileTest.exist?(@options[:default_ssh_opts])
16
- def_ssh_file = @options[:default_ssh_opts]
17
- else
18
- def_ssh_file = PRESET_SSH_OPTIONS_DEFAULT_FILE_PATH
19
- end
17
+ def_ssh_file = if @options[:default_ssh_opts] && FileTest.exist?(@options[:default_ssh_opts])
18
+ @options[:default_ssh_opts]
19
+ else
20
+ PRESET_SSH_OPTIONS_DEFAULT_FILE_PATH
21
+ end
20
22
 
21
23
  File.open(def_ssh_file) do |f|
22
24
  YAML.load_documents(f) do |y|
@@ -116,11 +116,11 @@ module Rundock
116
116
 
117
117
  unless recursive
118
118
  # apply cli options
119
- if !cli_options.key?(:run_anyway)
120
- node_attributes.errexit = true
121
- else
122
- node_attributes.errexit = !cli_options[:run_anyway]
123
- end
119
+ node_attributes.errexit = if !cli_options.key?(:run_anyway)
120
+ true
121
+ else
122
+ !cli_options[:run_anyway]
123
+ end
124
124
  node_attributes.dry_run = (cli_options && cli_options[:dry_run]) ? true : false
125
125
  end
126
126
 
@@ -8,18 +8,16 @@ module Rundock
8
8
  def build(scenario_targets)
9
9
  targets = {} unless scenario_targets
10
10
 
11
- if @options[:targetgroup]
12
- if FileTest.exist?(@options[:targetgroup])
13
- targets.merge!(YAML.load_file(@options[:targetgroup]).deep_symbolize_keys)
14
- Logger.info("merged target file #{@options[:targetgroup]}")
15
- elsif FileTest.exist?(DEFAULT_TARGET_GROUP_FILE_PATH)
16
- Logger.warn("targetgroup file is not found. use #{DEFAULT_TARGET_GROUP_FILE_PATH}")
17
- targets.merge!(YAML.load_file(DEFAULT_TARGET_GROUP_FILE_PATH).deep_symbolize_keys)
18
- else
19
- Logger.warn("Targetgroup path is not available. (#{@options[:targetgroup]})")
20
- end
11
+ return scenario_targets unless @options[:targetgroup]
12
+
13
+ if FileTest.exist?(@options[:targetgroup])
14
+ targets.merge!(YAML.load_file(@options[:targetgroup]).deep_symbolize_keys)
15
+ Logger.info("merged target file #{@options[:targetgroup]}")
16
+ elsif FileTest.exist?(DEFAULT_TARGET_GROUP_FILE_PATH)
17
+ Logger.warn("targetgroup file is not found. use #{DEFAULT_TARGET_GROUP_FILE_PATH}")
18
+ targets.merge!(YAML.load_file(DEFAULT_TARGET_GROUP_FILE_PATH).deep_symbolize_keys)
21
19
  else
22
- return scenario_targets
20
+ Logger.warn("Targetgroup path is not available. (#{@options[:targetgroup]})")
23
21
  end
24
22
 
25
23
  targets
@@ -8,18 +8,15 @@ module Rundock
8
8
  def build(scenario_tasks)
9
9
  tasks = {} unless scenario_tasks
10
10
 
11
- if @options[:tasks]
12
- if FileTest.exist?(@options[:tasks])
13
- tasks.merge!(YAML.load_file(@options[:tasks]).deep_symbolize_keys)
14
- Logger.info("merged tasks file #{@options[:tasks]}")
15
- elsif FileTest.exist?(DEFAULT_TASKS_FILE_PATH)
16
- Logger.warn("tasks file is not found. use #{DEFAULT_TASKS_FILE_PATH}")
17
- tasks.merge!(YAML.load_file(DEFAULT_TASKS_FILE_PATH).deep_symbolize_keys)
18
- else
19
- Logger.warn("Task path is not available. (#{@options[:tasks]})")
20
- end
11
+ return scenario_tasks unless @options[:tasks]
12
+ if FileTest.exist?(@options[:tasks])
13
+ tasks.merge!(YAML.load_file(@options[:tasks]).deep_symbolize_keys)
14
+ Logger.info("merged tasks file #{@options[:tasks]}")
15
+ elsif FileTest.exist?(DEFAULT_TASKS_FILE_PATH)
16
+ Logger.warn("tasks file is not found. use #{DEFAULT_TASKS_FILE_PATH}")
17
+ tasks.merge!(YAML.load_file(DEFAULT_TASKS_FILE_PATH).deep_symbolize_keys)
21
18
  else
22
- return scenario_tasks
19
+ Logger.warn("Task path is not available. (#{@options[:tasks]})")
23
20
  end
24
21
 
25
22
  tasks
data/lib/rundock/cli.rb CHANGED
@@ -25,7 +25,7 @@ module Rundock
25
25
 
26
26
  desc 'version', 'Print version'
27
27
  def version
28
- puts "#{Rundock::VERSION}"
28
+ puts Rundock::VERSION.to_s
29
29
  end
30
30
 
31
31
  desc 'do [SCENARIO] [options]', 'Run rundock from scenario file'
@@ -1,6 +1,6 @@
1
1
  class Hash
2
2
  def depth
3
- 1 + (values.map { |v| v.is_a?(Hash) ? v.depth : 1 }.max)
3
+ 1 + values.map { |v| v.is_a?(Hash) ? v.depth : 1 }.max
4
4
  end
5
5
 
6
6
  def deep_symbolize_keys
@@ -0,0 +1,26 @@
1
+ require 'bundler/vendored_thor' unless defined?(Thor)
2
+ require 'bundler'
3
+
4
+ module Rundock
5
+ module Gem
6
+ class Helper < Bundler::GemHelper
7
+ def install
8
+ desc "Run rundock with default configuration"
9
+ task :rundock => 'rundock:do'
10
+
11
+ namespace :rundock do
12
+ desc 'Run rundock with scenariofile.(env:SCENARIO_FILE_PATH)'
13
+ task 'do' do
14
+ if ENV['SCENARIO_FILE_PATH']
15
+ system("rundock do #{ENV['SCENARIO_FILE_PATH']}")
16
+ else
17
+ system('rundock do')
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+
@@ -0,0 +1,2 @@
1
+ require 'rundock/gem/helper'
2
+ Rundock::Gem::Helper.install_tasks
@@ -17,11 +17,11 @@ module Rundock
17
17
 
18
18
  obj = nil
19
19
  klass.split('::').map do |k|
20
- if obj.nil?
21
- obj = Kernel.const_get(k)
22
- else
23
- obj = obj.const_get(k)
24
- end
20
+ obj = if obj.nil?
21
+ Kernel.const_get(k)
22
+ else
23
+ obj = obj.const_get(k)
24
+ end
25
25
  end
26
26
 
27
27
  hook = obj.new(name, attributes)
@@ -101,22 +101,22 @@ module Rundock
101
101
  end
102
102
 
103
103
  def formatted_message(severity, datetime, progname, msg)
104
- if !@show_header
105
- out = "%s\n" % [msg2str(msg)]
106
- elsif !@date_header
107
- out = "%5s: %s%s\n" % [
108
- severity,
109
- ' ' * 2 * indent_depth,
110
- msg2str(msg)]
111
- elsif @short_header
112
- out = "%s: %s%s\n" % [severity[0, 1], ' ' * 2 * indent_depth, msg2str(msg)]
113
- else
114
- out = "[%s] %5s: %s%s\n" % [
115
- datetime.strftime('%Y-%m-%dT%H:%M:%S.%L'),
116
- severity,
117
- ' ' * 2 * indent_depth,
118
- msg2str(msg)]
119
- end
104
+ out = if !@show_header
105
+ "%s\n" % [msg2str(msg)]
106
+ elsif !@date_header
107
+ "%5s: %s%s\n" % [
108
+ severity,
109
+ ' ' * 2 * indent_depth,
110
+ msg2str(msg)]
111
+ elsif @short_header
112
+ "%s: %s%s\n" % [severity[0, 1], ' ' * 2 * indent_depth, msg2str(msg)]
113
+ else
114
+ "[%s] %5s: %s%s\n" % [
115
+ datetime.strftime('%Y-%m-%dT%H:%M:%S.%L'),
116
+ severity,
117
+ ' ' * 2 * indent_depth,
118
+ msg2str(msg)]
119
+ end
120
120
 
121
121
  out
122
122
  end
@@ -135,10 +135,10 @@ module Rundock
135
135
  end
136
136
 
137
137
  def colorize(msg, severity)
138
- if @color
139
- col = @color
140
- else
141
- col = case severity
138
+ col = if @color
139
+ @color
140
+ else
141
+ case severity
142
142
  when 'INFO'
143
143
  :clear
144
144
  when 'WARN'
@@ -148,7 +148,7 @@ module Rundock
148
148
  else
149
149
  :clear
150
150
  end
151
- end
151
+ end
152
152
 
153
153
  ANSI.public_send(col) { msg }
154
154
  end
@@ -17,11 +17,11 @@ module Rundock
17
17
 
18
18
  obj = nil
19
19
  klass.split('::').map do |k|
20
- if obj.nil?
21
- obj = Kernel.const_get(k)
22
- else
23
- obj = obj.const_get(k)
24
- end
20
+ obj = if obj.nil?
21
+ Kernel.const_get(k)
22
+ else
23
+ obj.const_get(k)
24
+ end
25
25
  end
26
26
 
27
27
  operation = obj.new(instruction, attributes)
@@ -51,11 +51,11 @@ module Rundock
51
51
 
52
52
  is_erb = opt.key?(:erb) && opt[:erb]
53
53
 
54
- if opt.key?(:trim_mode)
55
- trim_mode = opt[:trim_mode]
56
- else
57
- trim_mode = DEFAULT_TRIM_MODE
58
- end
54
+ trim_mode = if opt.key?(:trim_mode)
55
+ opt[:trim_mode]
56
+ else
57
+ DEFAULT_TRIM_MODE
58
+ end
59
59
 
60
60
  erb_options = ''
61
61
  erb_options = " erb: true trim_mode: #{trim_mode}" if is_erb
@@ -63,11 +63,11 @@ module Rundock
63
63
  Logger.info("deploy localhost: #{opt[:src]} remote:#{attributes[:nodeinfo][:host]}:#{opt[:dst]}#{erb_options}")
64
64
  Logger.debug("deploy erb binding: #{opt[:binding]}") if is_erb
65
65
 
66
- if is_erb
67
- val_binding = extract_map(backend, opt[:binding])
68
- else
69
- val_binding = {}
70
- end
66
+ val_binding = if is_erb
67
+ extract_map(backend, opt[:binding])
68
+ else
69
+ {}
70
+ end
71
71
 
72
72
  if is_erb
73
73
  erb_content = conv_erb(opt[:src], trim_mode, val_binding)
@@ -29,11 +29,13 @@ module Rundock
29
29
 
30
30
  def build(options)
31
31
  if options[:scenario] || options[:targetgroup]
32
- if options[:scenario] && !FileTest.exist?(options[:scenario])
33
- raise ScenarioNotFoundError, "'#{options[:scenario]}' scenario file is not found."
34
- elsif options[:command] && options[:targetgroup] && !FileTest.exist?(options[:targetgroup])
35
- raise ScenarioNotFoundError, "'#{options[:targetgroup]}' targetgroup file is not found."
36
- end
32
+ raise ScenarioNotFoundError,
33
+ "'#{options[:scenario]}' scenario file is not found." if options[:scenario] &&
34
+ !FileTest.exist?(options[:scenario])
35
+ raise ScenarioNotFoundError,
36
+ "'#{options[:targetgroup]}' targetgroup file is not found." if options[:command] &&
37
+ options[:targetgroup] &&
38
+ !FileTest.exist?(options[:targetgroup])
37
39
 
38
40
  options[:scenario] = options[:targetgroup] if options[:command] && options[:targetgroup]
39
41
 
@@ -1,3 +1,3 @@
1
1
  module Rundock
2
- VERSION = '0.5.4'
2
+ VERSION = '0.5.7'
3
3
  end
metadata CHANGED
@@ -1,131 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rundock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - hiracy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2016-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.9'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
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
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: serverspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.1'
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
54
  version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '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
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: specinfra
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 2.31.0
76
- - - <
76
+ - - "<"
77
77
  - !ruby/object:Gem::Version
78
78
  version: 3.0.0
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: 2.31.0
86
- - - <
86
+ - - "<"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 3.0.0
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: ansi
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - '>='
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: thor
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - '>='
107
+ - - ">="
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - '>='
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: net-ssh
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - '>='
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - '>='
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  description:
@@ -136,10 +136,10 @@ executables:
136
136
  extensions: []
137
137
  extra_rdoc_files: []
138
138
  files:
139
- - .gitignore
140
- - .rspec
141
- - .rubocop.yml
142
- - .travis.yml
139
+ - ".gitignore"
140
+ - ".rspec"
141
+ - ".rubocop.yml"
142
+ - ".travis.yml"
143
143
  - CHANGELOG.md
144
144
  - Gemfile
145
145
  - LICENSE
@@ -167,6 +167,8 @@ files:
167
167
  - lib/rundock/cli.rb
168
168
  - lib/rundock/ext/hash.rb
169
169
  - lib/rundock/ext/object/blank.rb
170
+ - lib/rundock/gem/helper.rb
171
+ - lib/rundock/gem/tasks.rb
170
172
  - lib/rundock/hook/base.rb
171
173
  - lib/rundock/hook_factory.rb
172
174
  - lib/rundock/logger.rb
@@ -242,17 +244,17 @@ require_paths:
242
244
  - lib
243
245
  required_ruby_version: !ruby/object:Gem::Requirement
244
246
  requirements:
245
- - - '>='
247
+ - - ">="
246
248
  - !ruby/object:Gem::Version
247
249
  version: '0'
248
250
  required_rubygems_version: !ruby/object:Gem::Requirement
249
251
  requirements:
250
- - - '>='
252
+ - - ">="
251
253
  - !ruby/object:Gem::Version
252
254
  version: '0'
253
255
  requirements: []
254
256
  rubyforge_project:
255
- rubygems_version: 2.4.5
257
+ rubygems_version: 2.6.3
256
258
  signing_key:
257
259
  specification_version: 4
258
260
  summary: Simple and extensible server orchestration framework