vmc 0.2.11 → 0.3.6
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/README.md +9 -0
- data/lib/cli/commands/apps.rb +60 -8
- data/lib/cli/commands/base.rb +24 -1
- data/lib/cli/commands/misc.rb +26 -2
- data/lib/cli/commands/user.rb +2 -2
- data/lib/cli/frameworks.rb +16 -8
- data/lib/cli/runner.rb +34 -2
- data/lib/cli/usage.rb +9 -0
- data/lib/cli/version.rb +1 -1
- data/lib/cli/zip_util.rb +1 -1
- data/lib/vmc/client.rb +7 -1
- data/lib/vmc/const.rb +1 -1
- metadata +2 -56
data/README.md
CHANGED
@@ -48,6 +48,11 @@ MIT license, please see the LICENSE file. All rights reserved._
|
|
48
48
|
stats <appname> Display resource usage for the application
|
49
49
|
instances <appname> List application instances
|
50
50
|
|
51
|
+
Application Environment
|
52
|
+
env <appname> List application environment variables
|
53
|
+
env-add <appname> <variable[=]value> Add an environment variable to an application
|
54
|
+
env-del <appname> <variable> Delete an environment variable to an application
|
55
|
+
|
51
56
|
Services
|
52
57
|
services Lists of services available and provisioned
|
53
58
|
create-service <service> [--name,--bind] Create a provisioned service
|
@@ -65,6 +70,10 @@ MIT license, please see the LICENSE file. All rights reserved._
|
|
65
70
|
add-user [--email, --passwd] Register a new user (requires admin privileges)
|
66
71
|
delete-user <user> Delete a user and all apps and services (requires admin privileges)
|
67
72
|
|
73
|
+
System
|
74
|
+
runtimes Display the supported runtimes of the target system
|
75
|
+
frameworks Display the recognized frameworks of the target system
|
76
|
+
|
68
77
|
Misc
|
69
78
|
aliases List aliases
|
70
79
|
alias <alias[=]command> Create an alias for a command
|
data/lib/cli/commands/apps.rb
CHANGED
@@ -125,7 +125,7 @@ module VMC::Cli::Command
|
|
125
125
|
display "Updating Memory Reservation to #{mem_quota_to_choice(memsize)}: ", false
|
126
126
|
|
127
127
|
# check memsize here for capacity
|
128
|
-
check_has_capacity_for(memsize - mem)
|
128
|
+
check_has_capacity_for((memsize - mem) * app[:instances])
|
129
129
|
|
130
130
|
mem = memsize
|
131
131
|
|
@@ -308,12 +308,11 @@ module VMC::Cli::Command
|
|
308
308
|
|
309
309
|
def update(appname)
|
310
310
|
app = client.app_info(appname)
|
311
|
-
path = @options[:path] || '.'
|
312
|
-
upload_app_bits(appname, path)
|
313
|
-
display "Successfully updated Application: '#{appname}'".green
|
314
311
|
if @options[:canary]
|
315
312
|
display "[--canary] is deprecated and will be removed in a future version".yellow
|
316
313
|
end
|
314
|
+
path = @options[:path] || '.'
|
315
|
+
upload_app_bits(appname, path)
|
317
316
|
restart appname if app[:state] == 'STARTED'
|
318
317
|
end
|
319
318
|
|
@@ -342,7 +341,9 @@ module VMC::Cli::Command
|
|
342
341
|
check_app_limit
|
343
342
|
|
344
343
|
# check memsize here for capacity
|
345
|
-
|
344
|
+
if memswitch && !no_start
|
345
|
+
check_has_capacity_for(mem_choice_to_quota(memswitch) * instances)
|
346
|
+
end
|
346
347
|
|
347
348
|
unless no_prompt || @options[:path]
|
348
349
|
proceed = ask('Would you like to deploy from the current directory? [Yn]: ')
|
@@ -407,15 +408,15 @@ module VMC::Cli::Command
|
|
407
408
|
mem_quota = mem_choice_to_quota(mem)
|
408
409
|
|
409
410
|
# check memsize here for capacity
|
410
|
-
check_has_capacity_for(mem_quota) unless no_start
|
411
|
+
check_has_capacity_for(mem_quota * instances) unless no_start
|
411
412
|
|
412
413
|
display 'Creating Application: ', false
|
413
414
|
|
414
415
|
manifest = {
|
415
416
|
:name => "#{appname}",
|
416
417
|
:staging => {
|
417
|
-
|
418
|
-
|
418
|
+
:framework => framework.name,
|
419
|
+
:runtime => @options[:runtime]
|
419
420
|
},
|
420
421
|
:uris => [url],
|
421
422
|
:instances => instances,
|
@@ -443,6 +444,57 @@ module VMC::Cli::Command
|
|
443
444
|
start(appname, true) unless no_start
|
444
445
|
end
|
445
446
|
|
447
|
+
def environment(appname)
|
448
|
+
app = client.app_info(appname)
|
449
|
+
env = app[:env] || []
|
450
|
+
return display JSON.pretty_generate(env) if @options[:json]
|
451
|
+
return display "No Environment Variables" if env.empty?
|
452
|
+
etable = table do |t|
|
453
|
+
t.headings = 'Variable', 'Value'
|
454
|
+
env.each do |e|
|
455
|
+
k,v = e.split('=')
|
456
|
+
t << [k, v]
|
457
|
+
end
|
458
|
+
end
|
459
|
+
display "\n"
|
460
|
+
display etable
|
461
|
+
end
|
462
|
+
|
463
|
+
def environment_add(appname, k, v=nil)
|
464
|
+
app = client.app_info(appname)
|
465
|
+
env = app[:env] || []
|
466
|
+
k,v = k.split('=') unless v
|
467
|
+
env << "#{k}=#{v}"
|
468
|
+
display "Adding Environment Variable [#{k}=#{v}]: ", false
|
469
|
+
app[:env] = env
|
470
|
+
client.update_app(appname, app)
|
471
|
+
display 'OK'.green
|
472
|
+
restart appname if app[:state] == 'STARTED'
|
473
|
+
end
|
474
|
+
|
475
|
+
def environment_del(appname, variable)
|
476
|
+
app = client.app_info(appname)
|
477
|
+
env = app[:env] || []
|
478
|
+
deleted_env = nil
|
479
|
+
env.each do |e|
|
480
|
+
k,v = e.split('=')
|
481
|
+
if (k == variable)
|
482
|
+
deleted_env = e
|
483
|
+
break;
|
484
|
+
end
|
485
|
+
end
|
486
|
+
display "Deleting Environment Variable [#{variable}]: ", false
|
487
|
+
if deleted_env
|
488
|
+
env.delete(deleted_env)
|
489
|
+
app[:env] = env
|
490
|
+
client.update_app(appname, app)
|
491
|
+
display 'OK'.green
|
492
|
+
restart appname if app[:state] == 'STARTED'
|
493
|
+
else
|
494
|
+
display 'OK'.green
|
495
|
+
end
|
496
|
+
end
|
497
|
+
|
446
498
|
private
|
447
499
|
|
448
500
|
def app_exists?(appname)
|
data/lib/cli/commands/base.rb
CHANGED
@@ -30,7 +30,7 @@ module VMC::Cli
|
|
30
30
|
def client
|
31
31
|
return @client if @client
|
32
32
|
@client = VMC::Client.new(target_url, auth_token)
|
33
|
-
@client.trace =
|
33
|
+
@client.trace = VMC::Cli::Config.trace if VMC::Cli::Config.trace
|
34
34
|
@client.proxy_for @options[:proxy] if @options[:proxy]
|
35
35
|
@client
|
36
36
|
end
|
@@ -50,6 +50,29 @@ module VMC::Cli
|
|
50
50
|
@auth_token = VMC::Cli::Config.auth_token
|
51
51
|
end
|
52
52
|
|
53
|
+
def runtimes_info
|
54
|
+
return @runtimes if @runtimes
|
55
|
+
info = client_info
|
56
|
+
@runtimes = {}
|
57
|
+
if info[:frameworks]
|
58
|
+
info[:frameworks].each_value do |f|
|
59
|
+
next unless f[:runtimes]
|
60
|
+
f[:runtimes].each { |r| @runtimes[r[:name]] = r}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
@runtimes
|
64
|
+
end
|
65
|
+
|
66
|
+
def frameworks_info
|
67
|
+
return @frameworks if @frameworks
|
68
|
+
info = client_info
|
69
|
+
@frameworks = []
|
70
|
+
if info[:frameworks]
|
71
|
+
info[:frameworks].each_value { |f| @frameworks << [f[:name]] }
|
72
|
+
end
|
73
|
+
@frameworks
|
74
|
+
end
|
75
|
+
|
53
76
|
end
|
54
77
|
end
|
55
78
|
end
|
data/lib/cli/commands/misc.rb
CHANGED
@@ -42,7 +42,7 @@ module VMC::Cli::Command
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def info
|
45
|
-
info =
|
45
|
+
info = client_info
|
46
46
|
return display JSON.pretty_generate(info) if @options[:json]
|
47
47
|
|
48
48
|
display "\n#{info[:description]}"
|
@@ -67,12 +67,36 @@ module VMC::Cli::Command
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
+
def runtimes
|
71
|
+
raise VMC::Client::AuthError unless client.logged_in?
|
72
|
+
return display JSON.pretty_generate(runtimes_info) if @options[:json]
|
73
|
+
return display "No Runtimes" if runtimes_info.empty?
|
74
|
+
rtable = table do |t|
|
75
|
+
t.headings = 'Name', 'Description', 'Version'
|
76
|
+
runtimes_info.each_value { |rt| t << [rt[:name], rt[:description], rt[:version]] }
|
77
|
+
end
|
78
|
+
display "\n"
|
79
|
+
display rtable
|
80
|
+
end
|
81
|
+
|
82
|
+
def frameworks
|
83
|
+
raise VMC::Client::AuthError unless client.logged_in?
|
84
|
+
return display JSON.pretty_generate(frameworks_info) if @options[:json]
|
85
|
+
return display "No Frameworks" if frameworks_info.empty?
|
86
|
+
rtable = table do |t|
|
87
|
+
t.headings = ['Name']
|
88
|
+
frameworks_info.each { |f| t << f }
|
89
|
+
end
|
90
|
+
display "\n"
|
91
|
+
display rtable
|
92
|
+
end
|
93
|
+
|
70
94
|
def aliases
|
71
95
|
aliases = VMC::Cli::Config.aliases
|
72
96
|
return display JSON.pretty_generate(aliases) if @options[:json]
|
73
97
|
return display "No Aliases" if aliases.empty?
|
74
98
|
atable = table do |t|
|
75
|
-
t.headings = 'Alias',
|
99
|
+
t.headings = 'Alias', 'Command'
|
76
100
|
aliases.each { |k,v| t << [k, v] }
|
77
101
|
end
|
78
102
|
display "\n"
|
data/lib/cli/commands/user.rb
CHANGED
@@ -3,7 +3,7 @@ module VMC::Cli::Command
|
|
3
3
|
class User < Base
|
4
4
|
|
5
5
|
def info
|
6
|
-
info =
|
6
|
+
info = client_info
|
7
7
|
username = info[:user] || 'N/A'
|
8
8
|
return display JSON.pretty_generate([username]) if @options[:json]
|
9
9
|
display "\n[#{username}]"
|
@@ -34,7 +34,7 @@ module VMC::Cli::Command
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def change_password(password=nil)
|
37
|
-
info =
|
37
|
+
info = client_info
|
38
38
|
email = info[:user]
|
39
39
|
err "Need to be logged in to change password." unless email
|
40
40
|
say "Changing password for '#{email}'\n"
|
data/lib/cli/frameworks.rb
CHANGED
@@ -6,13 +6,21 @@ module VMC::Cli
|
|
6
6
|
DEFAULT_MEM = '256M'
|
7
7
|
|
8
8
|
FRAMEWORKS = {
|
9
|
-
'Rails' => ['rails/1.0', { :mem => '256M', :description => 'Rails Application'}],
|
10
|
-
'Spring' => ['spring_web/1.0', { :mem => '512M', :description => 'Java SpringSource Spring Application'}],
|
11
|
-
'Grails' => ['grails/1.0', { :mem => '512M', :description => 'Java SpringSource Grails Application'}],
|
12
|
-
'Roo' => ['spring_web/1.0', { :mem => '512M', :description => 'Java SpringSource Roo Application'}],
|
13
|
-
'JavaWeb' => ['spring_web/1.0', { :mem => '512M', :description => 'Java Web Application'}],
|
14
|
-
'Sinatra' => [DEFAULT_FRAMEWORK, { :mem => '128M', :description => 'Sinatra Application'}],
|
15
|
-
'Node' => ['nodejs/1.0', { :mem => '64M', :description => 'Node.js Application'}],
|
9
|
+
# 'Rails' => ['rails/1.0', { :mem => '256M', :description => 'Rails Application'}],
|
10
|
+
# 'Spring' => ['spring_web/1.0', { :mem => '512M', :description => 'Java SpringSource Spring Application'}],
|
11
|
+
# 'Grails' => ['grails/1.0', { :mem => '512M', :description => 'Java SpringSource Grails Application'}],
|
12
|
+
# 'Roo' => ['spring_web/1.0', { :mem => '512M', :description => 'Java SpringSource Roo Application'}],
|
13
|
+
# 'JavaWeb' => ['spring_web/1.0', { :mem => '512M', :description => 'Java Web Application'}],
|
14
|
+
# 'Sinatra' => [DEFAULT_FRAMEWORK, { :mem => '128M', :description => 'Sinatra Application'}],
|
15
|
+
# 'Node' => ['nodejs/1.0', { :mem => '64M', :description => 'Node.js Application'}],
|
16
|
+
|
17
|
+
'Rails' => ['rails3', { :mem => '256M', :description => 'Rails Application'}],
|
18
|
+
'Spring' => ['spring', { :mem => '512M', :description => 'Java SpringSource Spring Application'}],
|
19
|
+
'Grails' => ['grails', { :mem => '512M', :description => 'Java SpringSource Grails Application'}],
|
20
|
+
'Roo' => ['spring', { :mem => '512M', :description => 'Java SpringSource Roo Application'}],
|
21
|
+
'JavaWeb' => ['spring', { :mem => '512M', :description => 'Java Web Application'}],
|
22
|
+
'Sinatra' => ['sinatra', { :mem => '128M', :description => 'Sinatra Application'}],
|
23
|
+
'Node' => ['node', { :mem => '64M', :description => 'Node.js Application'}],
|
16
24
|
}
|
17
25
|
|
18
26
|
class << self
|
@@ -55,7 +63,7 @@ module VMC::Cli
|
|
55
63
|
next if matched_file
|
56
64
|
File.open(fname, 'r') do |f|
|
57
65
|
str = f.read # This might want to be limited
|
58
|
-
matched_file = fname if (str && str.match(/^\s*require\s*'sinatra'/))
|
66
|
+
matched_file = fname if (str && str.match(/^\s*require\s*['"]sinatra['"]/))
|
59
67
|
end
|
60
68
|
end
|
61
69
|
if matched_file
|
data/lib/cli/runner.rb
CHANGED
@@ -45,7 +45,9 @@ class VMC::Cli::Runner
|
|
45
45
|
opts.on('--all') { @options[:all] = true }
|
46
46
|
|
47
47
|
# generic tracing and debugging
|
48
|
-
opts.on('-t
|
48
|
+
opts.on('-t [TKEY]') { |tkey| @options[:trace] = tkey || true }
|
49
|
+
opts.on('--trace [TKEY]') { |tkey| @options[:trace] = tkey || true }
|
50
|
+
|
49
51
|
opts.on('-q', '--quiet') { @options[:quiet] = true }
|
50
52
|
|
51
53
|
# Don't use builtin zip
|
@@ -71,6 +73,8 @@ class VMC::Cli::Runner
|
|
71
73
|
opts.on('-v', '--version') { set_cmd(:misc, :version) }
|
72
74
|
opts.on('-h', '--help') { puts "#{command_usage}\n"; exit }
|
73
75
|
|
76
|
+
opts.on('--runtime RUNTIME') { |rt| @options[:runtime] = rt }
|
77
|
+
|
74
78
|
# deprecated
|
75
79
|
opts.on('--exec EXEC') { |exec| @options[:exec] = exec }
|
76
80
|
opts.on('--noframework') { @options[:noframework] = true }
|
@@ -156,6 +160,14 @@ class VMC::Cli::Runner
|
|
156
160
|
usage('vmc info')
|
157
161
|
set_cmd(:misc, :info)
|
158
162
|
|
163
|
+
when 'runtimes'
|
164
|
+
usage('vmc runtimes')
|
165
|
+
set_cmd(:misc, :runtimes)
|
166
|
+
|
167
|
+
when 'frameworks'
|
168
|
+
usage('vmc frameworks')
|
169
|
+
set_cmd(:misc, :frameworks)
|
170
|
+
|
159
171
|
when 'user'
|
160
172
|
usage('vmc user')
|
161
173
|
set_cmd(:user, :info)
|
@@ -289,6 +301,22 @@ class VMC::Cli::Runner
|
|
289
301
|
usage('vmc services')
|
290
302
|
set_cmd(:services, :services)
|
291
303
|
|
304
|
+
when 'env'
|
305
|
+
usage('vmc env <appname>')
|
306
|
+
set_cmd(:apps, :environment, 1)
|
307
|
+
|
308
|
+
when 'env-add'
|
309
|
+
usage('vmc env-add <appname> <variable[=]value>')
|
310
|
+
if @args.size == 2
|
311
|
+
set_cmd(:apps, :environment_add, 2)
|
312
|
+
elsif @args.size == 3
|
313
|
+
set_cmd(:apps, :environment_add, 3)
|
314
|
+
end
|
315
|
+
|
316
|
+
when 'env-del'
|
317
|
+
usage('vmc env-del <appname> <variable>')
|
318
|
+
set_cmd(:apps, :environment_del, 2)
|
319
|
+
|
292
320
|
when 'create-service', 'create_service'
|
293
321
|
usage('vmc create-service [service] [servicename] [appname] [--name servicename] [--bind appname]')
|
294
322
|
set_cmd(:services, :create_service) if @args.size == 0
|
@@ -387,8 +415,8 @@ class VMC::Cli::Runner
|
|
387
415
|
@options[:colorize] = false unless STDOUT.tty?
|
388
416
|
|
389
417
|
VMC::Cli::Config.colorize = @options.delete(:colorize)
|
390
|
-
VMC::Cli::Config.trace = @options.delete(:trace)
|
391
418
|
VMC::Cli::Config.nozip = @options.delete(:nozip)
|
419
|
+
VMC::Cli::Config.trace = @options.delete(:trace)
|
392
420
|
VMC::Cli::Config.output ||= STDOUT unless @options[:quiet]
|
393
421
|
|
394
422
|
process_aliases!
|
@@ -432,6 +460,10 @@ class VMC::Cli::Runner
|
|
432
460
|
@exit_status = false
|
433
461
|
rescue SystemExit => e
|
434
462
|
@exit_status = e.success?
|
463
|
+
rescue SyntaxError => e
|
464
|
+
puts e.message.red
|
465
|
+
puts e.backtrace
|
466
|
+
@exit_status = false
|
435
467
|
rescue => e
|
436
468
|
puts e.message.red
|
437
469
|
puts e.backtrace
|
data/lib/cli/usage.rb
CHANGED
@@ -62,6 +62,11 @@ Currently available vmc commands are:
|
|
62
62
|
stats <appname> Display resource usage for the application
|
63
63
|
instances <appname> List application instances
|
64
64
|
|
65
|
+
Application Environment
|
66
|
+
env <appname> List application environment variables
|
67
|
+
env-add <appname> <variable[=]value> Add an environment variable to an application
|
68
|
+
env-del <appname> <variable> Delete an environment variable to an application
|
69
|
+
|
65
70
|
Services
|
66
71
|
services Lists of services available and provisioned
|
67
72
|
create-service <service> [--name,--bind] Create a provisioned service
|
@@ -79,6 +84,10 @@ Currently available vmc commands are:
|
|
79
84
|
add-user [--email, --passwd] Register a new user (requires admin privileges)
|
80
85
|
delete-user <user> Delete a user and all apps and services (requires admin privileges)
|
81
86
|
|
87
|
+
System
|
88
|
+
runtimes Display the supported runtimes of the target system
|
89
|
+
frameworks Display the recognized frameworks of the target system
|
90
|
+
|
82
91
|
Misc
|
83
92
|
aliases List aliases
|
84
93
|
alias <alias[=]command> Create an alias for a command
|
data/lib/cli/version.rb
CHANGED
data/lib/cli/zip_util.rb
CHANGED
@@ -51,7 +51,7 @@ module VMC::Cli
|
|
51
51
|
excludes = PACK_EXCLUSION_GLOBS.map { |e| "\\#{e}" }
|
52
52
|
excludes = excludes.join(' ')
|
53
53
|
Dir.chdir(dir) do
|
54
|
-
`zip -q -r #{zipfile} . -x #{excludes} 2> /dev/null`
|
54
|
+
`zip -y -q -r #{zipfile} . -x #{excludes} 2> /dev/null`
|
55
55
|
return unless $? != 0
|
56
56
|
end
|
57
57
|
end
|
data/lib/vmc/client.rb
CHANGED
@@ -367,13 +367,19 @@ class VMC::Client
|
|
367
367
|
def perform_http_request(req)
|
368
368
|
RestClient.proxy = ENV['https_proxy'] || ENV['http_proxy']
|
369
369
|
|
370
|
+
# Setup tracing if needed
|
371
|
+
unless trace.nil?
|
372
|
+
req[:headers]['X-VCAP-Trace'] = (trace == true ? '22' : trace)
|
373
|
+
end
|
374
|
+
|
370
375
|
result = nil
|
371
376
|
RestClient::Request.execute(req) do |response, request|
|
372
377
|
result = [ response.code, response.body, response.headers ]
|
373
|
-
|
378
|
+
unless trace.nil?
|
374
379
|
puts '>>>'
|
375
380
|
puts "PROXY: #{RestClient.proxy}" if RestClient.proxy
|
376
381
|
puts "REQUEST: #{req[:method]} #{req[:url]}"
|
382
|
+
puts "RESPONSE_HEADERS: #{response.headers}"
|
377
383
|
puts "REQUEST_BODY: #{req[:payload]}" if req[:payload]
|
378
384
|
puts "RESPONSE: [#{response.code}] #{response.body}"
|
379
385
|
puts '<<<'
|
data/lib/vmc/const.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 1
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 11
|
10
|
-
version: 0.2.11
|
5
|
+
version: 0.3.6
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- VMware
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-07 00:00:00 -05:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,11 +21,6 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - ~>
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 1
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 5
|
33
|
-
- 1
|
34
24
|
version: 1.5.1
|
35
25
|
type: :runtime
|
36
26
|
version_requirements: *id001
|
@@ -42,11 +32,6 @@ dependencies:
|
|
42
32
|
requirements:
|
43
33
|
- - ~>
|
44
34
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 13
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 0
|
49
|
-
- 1
|
50
35
|
version: 2.0.1
|
51
36
|
type: :runtime
|
52
37
|
version_requirements: *id002
|
@@ -58,11 +43,6 @@ dependencies:
|
|
58
43
|
requirements:
|
59
44
|
- - ~>
|
60
45
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 13
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 6
|
65
|
-
- 1
|
66
46
|
version: 1.6.1
|
67
47
|
type: :runtime
|
68
48
|
version_requirements: *id003
|
@@ -74,19 +54,9 @@ dependencies:
|
|
74
54
|
requirements:
|
75
55
|
- - ">="
|
76
56
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 13
|
78
|
-
segments:
|
79
|
-
- 1
|
80
|
-
- 6
|
81
|
-
- 1
|
82
57
|
version: 1.6.1
|
83
58
|
- - <
|
84
59
|
- !ruby/object:Gem::Version
|
85
|
-
hash: 11
|
86
|
-
segments:
|
87
|
-
- 1
|
88
|
-
- 7
|
89
|
-
- 0
|
90
60
|
version: 1.7.0
|
91
61
|
type: :runtime
|
92
62
|
version_requirements: *id004
|
@@ -98,11 +68,6 @@ dependencies:
|
|
98
68
|
requirements:
|
99
69
|
- - ~>
|
100
70
|
- !ruby/object:Gem::Version
|
101
|
-
hash: 3
|
102
|
-
segments:
|
103
|
-
- 1
|
104
|
-
- 4
|
105
|
-
- 2
|
106
71
|
version: 1.4.2
|
107
72
|
type: :runtime
|
108
73
|
version_requirements: *id005
|
@@ -114,9 +79,6 @@ dependencies:
|
|
114
79
|
requirements:
|
115
80
|
- - ">="
|
116
81
|
- !ruby/object:Gem::Version
|
117
|
-
hash: 3
|
118
|
-
segments:
|
119
|
-
- 0
|
120
82
|
version: "0"
|
121
83
|
type: :development
|
122
84
|
version_requirements: *id006
|
@@ -128,11 +90,6 @@ dependencies:
|
|
128
90
|
requirements:
|
129
91
|
- - ~>
|
130
92
|
- !ruby/object:Gem::Version
|
131
|
-
hash: 27
|
132
|
-
segments:
|
133
|
-
- 1
|
134
|
-
- 3
|
135
|
-
- 0
|
136
93
|
version: 1.3.0
|
137
94
|
type: :development
|
138
95
|
version_requirements: *id007
|
@@ -144,11 +101,6 @@ dependencies:
|
|
144
101
|
requirements:
|
145
102
|
- - ~>
|
146
103
|
- !ruby/object:Gem::Version
|
147
|
-
hash: 3
|
148
|
-
segments:
|
149
|
-
- 1
|
150
|
-
- 5
|
151
|
-
- 0
|
152
104
|
version: 1.5.0
|
153
105
|
type: :development
|
154
106
|
version_requirements: *id008
|
@@ -219,18 +171,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
171
|
requirements:
|
220
172
|
- - ">="
|
221
173
|
- !ruby/object:Gem::Version
|
222
|
-
hash: 3
|
223
|
-
segments:
|
224
|
-
- 0
|
225
174
|
version: "0"
|
226
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
176
|
none: false
|
228
177
|
requirements:
|
229
178
|
- - ">="
|
230
179
|
- !ruby/object:Gem::Version
|
231
|
-
hash: 3
|
232
|
-
segments:
|
233
|
-
- 0
|
234
180
|
version: "0"
|
235
181
|
requirements: []
|
236
182
|
|