shelly 0.0.46.pre2 → 0.0.46.pre3
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/lib/shelly/app.rb +1 -6
- data/lib/shelly/cli/main.rb +9 -42
- data/lib/shelly/client.rb +2 -6
- data/lib/shelly/user.rb +0 -5
- data/lib/shelly/version.rb +1 -1
- data/spec/shelly/app_spec.rb +3 -10
- data/spec/shelly/cli/main_spec.rb +15 -109
- data/spec/shelly/client_spec.rb +5 -12
- data/spec/shelly/user_spec.rb +0 -7
- metadata +30 -30
data/lib/shelly/app.rb
CHANGED
@@ -147,12 +147,7 @@ module Shelly
|
|
147
147
|
file_name_or_code
|
148
148
|
end
|
149
149
|
|
150
|
-
response = shelly.
|
151
|
-
response["result"]
|
152
|
-
end
|
153
|
-
|
154
|
-
def rake(task)
|
155
|
-
response = shelly.command(code_name, task, :rake)
|
150
|
+
response = shelly.run(code_name, code)
|
156
151
|
response["result"]
|
157
152
|
end
|
158
153
|
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -13,12 +13,12 @@ module Shelly
|
|
13
13
|
register(Backup, "backup", "backup <command>", "Manage database backups")
|
14
14
|
register(Deploys, "deploys", "deploys <command>", "View deploy logs")
|
15
15
|
register(Config, "config", "config <command>", "Manage application configuration files")
|
16
|
-
check_unknown_options!
|
16
|
+
check_unknown_options!
|
17
17
|
|
18
18
|
# FIXME: it should be possible to pass single symbol, instead of one element array
|
19
|
-
before_hook :logged_in?, :only => [:add, :list, :start, :stop, :logs, :delete, :ip, :logout, :execute
|
19
|
+
before_hook :logged_in?, :only => [:add, :list, :start, :stop, :logs, :delete, :ip, :logout, :execute]
|
20
20
|
before_hook :inside_git_repository?, :only => [:add]
|
21
|
-
before_hook :cloudfile_present?, :only => [:logs, :stop, :start, :ip
|
21
|
+
before_hook :cloudfile_present?, :only => [:logs, :stop, :start, :ip]
|
22
22
|
|
23
23
|
map %w(-v --version) => :version
|
24
24
|
desc "version", "Display shelly version"
|
@@ -29,26 +29,21 @@ module Shelly
|
|
29
29
|
desc "register [EMAIL]", "Register new account"
|
30
30
|
def register(email = nil)
|
31
31
|
user = Shelly::User.new
|
32
|
-
user.ssh_key_registered?
|
33
32
|
say "Registering with email: #{email}" if email
|
34
33
|
user.email = (email || ask_for_email)
|
35
34
|
user.password = ask_for_password
|
36
35
|
user.register
|
37
36
|
if user.ssh_key_exists?
|
38
37
|
say "Uploading your public SSH key from #{user.ssh_key_path}"
|
38
|
+
else
|
39
|
+
say_error "No such file or directory - #{user.ssh_key_path}", :with_exit => false
|
40
|
+
say_error "Use ssh-keygen to generate ssh key pair, after that use: `shelly login`", :with_exit => false
|
39
41
|
end
|
40
42
|
say "Successfully registered!"
|
41
43
|
say "Check you mailbox for email address confirmation"
|
42
44
|
rescue Client::ValidationException => e
|
43
45
|
e.each_error { |error| say_error "#{error}", :with_exit => false }
|
44
46
|
exit 1
|
45
|
-
rescue Client::ConflictException
|
46
|
-
say_error "User with your ssh key already exists.", :with_exit => false
|
47
|
-
say_error "You can login using: shelly login [EMAIL]", :with_exit => false
|
48
|
-
exit 1
|
49
|
-
rescue Errno::ENOENT => e
|
50
|
-
say_error e, :with_exit => false
|
51
|
-
say_error "Use ssh-keygen to generate ssh key pair"
|
52
47
|
end
|
53
48
|
|
54
49
|
desc "login [EMAIL]", "Log into Shelly Cloud"
|
@@ -236,8 +231,9 @@ module Shelly
|
|
236
231
|
say "You have been successfully logged out" if user.delete_credentials
|
237
232
|
end
|
238
233
|
|
239
|
-
desc "execute CODE", "Run code on one of application servers"
|
240
|
-
method_option :cloud, :type => :string, :aliases => "-c",
|
234
|
+
desc "execute [CODE]", "Run code on one of application servers"
|
235
|
+
method_option :cloud, :type => :string, :aliases => "-c",
|
236
|
+
:desc => "Specify which cloud to run code for"
|
241
237
|
long_desc "Run code given in parameter on one of application servers. If a file name is given, run contents of that file."
|
242
238
|
def execute(file_name_or_code)
|
243
239
|
cloud = options[:cloud]
|
@@ -254,18 +250,6 @@ module Shelly
|
|
254
250
|
end
|
255
251
|
end
|
256
252
|
|
257
|
-
desc "rake TASK", "Run rake task"
|
258
|
-
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
259
|
-
def rake(task = nil)
|
260
|
-
task = rake_args.join(" ")
|
261
|
-
multiple_clouds(options[:cloud], "rake #{task}")
|
262
|
-
result = @app.rake(task)
|
263
|
-
say result
|
264
|
-
rescue Client::APIException => e
|
265
|
-
raise unless e[:message] == "App not running"
|
266
|
-
say_error "Cloud #{@app} is not running. Cannot run rake task."
|
267
|
-
end
|
268
|
-
|
269
253
|
desc "redeploy", "Redeploy application"
|
270
254
|
method_option :cloud, :type => :string, :aliases => "-c",
|
271
255
|
:desc => "Specify which cloud to redeploy application for"
|
@@ -290,23 +274,6 @@ module Shelly
|
|
290
274
|
|
291
275
|
# FIXME: move to helpers
|
292
276
|
no_tasks do
|
293
|
-
# Returns valid arguments for rake, removes shelly gem arguments
|
294
|
-
def rake_args(args = ARGV)
|
295
|
-
skip_next = false
|
296
|
-
[].tap do |out|
|
297
|
-
args.each do |arg|
|
298
|
-
case arg
|
299
|
-
when "rake", "--debug"
|
300
|
-
when "--cloud", "-c"
|
301
|
-
skip_next = true
|
302
|
-
else
|
303
|
-
out << arg unless skip_next
|
304
|
-
skip_next = false
|
305
|
-
end
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
277
|
def check_options(options)
|
311
278
|
unless options.empty?
|
312
279
|
unless ["code-name", "databases", "domains"].all? do |option|
|
data/lib/shelly/client.rb
CHANGED
@@ -115,8 +115,8 @@ module Shelly
|
|
115
115
|
get("/apps/#{code_name}")
|
116
116
|
end
|
117
117
|
|
118
|
-
def
|
119
|
-
post("/apps/#{cloud}/
|
118
|
+
def run(cloud, code)
|
119
|
+
post("/apps/#{cloud}/run", :body => code)
|
120
120
|
end
|
121
121
|
|
122
122
|
def deploy_logs(cloud)
|
@@ -147,10 +147,6 @@ module Shelly
|
|
147
147
|
post("/apps/#{code_name}/database_backups", :kind => kind)
|
148
148
|
end
|
149
149
|
|
150
|
-
def ssh_key_available?(ssh_key)
|
151
|
-
get("/users/new", :ssh_key => ssh_key)
|
152
|
-
end
|
153
|
-
|
154
150
|
def app_users(cloud)
|
155
151
|
get("/apps/#{cloud}/users")
|
156
152
|
end
|
data/lib/shelly/user.rb
CHANGED
@@ -60,11 +60,6 @@ module Shelly
|
|
60
60
|
File.expand_path("~/.ssh/id_rsa.pub")
|
61
61
|
end
|
62
62
|
|
63
|
-
def ssh_key_registered?
|
64
|
-
ssh_key = File.read(ssh_key_path).strip
|
65
|
-
shelly.ssh_key_available?(ssh_key)
|
66
|
-
end
|
67
|
-
|
68
63
|
def self.guess_email
|
69
64
|
@@guess_email ||= IO.popen("git config --get user.email").read.strip
|
70
65
|
end
|
data/lib/shelly/version.rb
CHANGED
data/spec/shelly/app_spec.rb
CHANGED
@@ -293,28 +293,21 @@ config
|
|
293
293
|
@response = {
|
294
294
|
"result" => "4"
|
295
295
|
}
|
296
|
-
@client.stub(:
|
296
|
+
@client.stub(:run).and_return(@response)
|
297
297
|
File.open("to_run.rb", 'w') {|f| f.write("User.count\n") }
|
298
298
|
end
|
299
299
|
|
300
300
|
it "should return result of executed code" do
|
301
|
-
@client.should_receive(:
|
301
|
+
@client.should_receive(:run).with("foo-staging", "2 + 2")
|
302
302
|
@app.run("2 + 2").should == "4"
|
303
303
|
end
|
304
304
|
|
305
305
|
it "should send contents of file when file exists" do
|
306
|
-
@client.should_receive(:
|
306
|
+
@client.should_receive(:run).with("foo-staging", "User.count\n")
|
307
307
|
@app.run("to_run.rb")
|
308
308
|
end
|
309
309
|
end
|
310
310
|
|
311
|
-
describe "#rake" do
|
312
|
-
it "should return result of rake task" do
|
313
|
-
@client.should_receive(:command).with("foo-staging", "db:create", :rake).and_return({"result" => "OK"})
|
314
|
-
@app.rake("db:create").should == "OK"
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
311
|
describe "#to_s" do
|
319
312
|
it "should return code_name" do
|
320
313
|
@app.to_s.should == "foo-staging"
|
@@ -29,14 +29,13 @@ Tasks:
|
|
29
29
|
shelly config <command> # Manage application configuration files
|
30
30
|
shelly delete # Delete the cloud
|
31
31
|
shelly deploys <command> # View deploy logs
|
32
|
-
shelly execute CODE
|
32
|
+
shelly execute [CODE] # Run code on one of application servers
|
33
33
|
shelly help [TASK] # Describe available tasks or one specific task
|
34
34
|
shelly ip # List cloud's IP addresses
|
35
35
|
shelly list # List available clouds
|
36
36
|
shelly login [EMAIL] # Log into Shelly Cloud
|
37
37
|
shelly logout # Logout from Shelly Cloud
|
38
38
|
shelly logs # Show latest application logs
|
39
|
-
shelly rake TASK # Run rake task
|
40
39
|
shelly redeploy # Redeploy application
|
41
40
|
shelly register [EMAIL] # Register new account
|
42
41
|
shelly start # Start the cloud
|
@@ -78,23 +77,14 @@ OUT
|
|
78
77
|
Shelly::User.stub(:new).and_return(@user)
|
79
78
|
end
|
80
79
|
|
81
|
-
it "should
|
80
|
+
it "should register user without local SSH Key and show message to create SSH Key" do
|
82
81
|
FileUtils.rm_rf(@key_path)
|
83
82
|
File.exists?(@key_path).should be_false
|
84
|
-
$stdout.should_receive(:puts).with("
|
85
|
-
$stdout.should_receive(:puts).with("
|
86
|
-
|
87
|
-
invoke(@main, :register)
|
88
|
-
}.should raise_error(SystemExit)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should check ssh key in database" do
|
92
|
-
@user.stub(:ssh_key_registered?).and_raise(Shelly::Client::ConflictException.new)
|
93
|
-
$stdout.should_receive(:puts).with("\e[31mUser with your ssh key already exists.\e[0m")
|
94
|
-
$stdout.should_receive(:puts).with("\e[31mYou can login using: shelly login [EMAIL]\e[0m")
|
95
|
-
lambda {
|
83
|
+
$stdout.should_receive(:puts).with(red "No such file or directory - #{@key_path}")
|
84
|
+
$stdout.should_receive(:puts).with(red "Use ssh-keygen to generate ssh key pair, after that use: `shelly login`")
|
85
|
+
fake_stdin(["better@example.com", "secret", "secret"]) do
|
96
86
|
invoke(@main, :register)
|
97
|
-
|
87
|
+
end
|
98
88
|
end
|
99
89
|
|
100
90
|
it "should ask for email, password and password confirmation" do
|
@@ -943,13 +933,9 @@ OUT
|
|
943
933
|
hooks(@main, :execute).should include(:logged_in?)
|
944
934
|
end
|
945
935
|
|
946
|
-
it "should ensure cloudfile present" do
|
947
|
-
hooks(@main, :execute).should include(:cloudfile_present?)
|
948
|
-
end
|
949
|
-
|
950
936
|
context "single cloud in Cloudfile" do
|
951
937
|
it "should execute code for the cloud" do
|
952
|
-
@client.should_receive(:
|
938
|
+
@client.should_receive(:run).with("foo-production", "User.count").
|
953
939
|
and_return({"result" => "3"})
|
954
940
|
$stdout.should_receive(:puts).with("3")
|
955
941
|
invoke(@main, :execute, "to_execute.rb")
|
@@ -974,7 +960,7 @@ OUT
|
|
974
960
|
end
|
975
961
|
|
976
962
|
it "should fetch from command line which cloud to start" do
|
977
|
-
@client.should_receive(:
|
963
|
+
@client.should_receive(:run).with("foo-staging", "User.count").
|
978
964
|
and_return({"result" => "3"})
|
979
965
|
$stdout.should_receive(:puts).with("3")
|
980
966
|
@main.options = {:cloud => "foo-staging"}
|
@@ -982,7 +968,7 @@ OUT
|
|
982
968
|
end
|
983
969
|
|
984
970
|
it "should run code when no file from parameter is found" do
|
985
|
-
@client.should_receive(:
|
971
|
+
@client.should_receive(:run).with("foo-staging", "2 + 2").
|
986
972
|
and_return({"result" => "4"})
|
987
973
|
$stdout.should_receive(:puts).with("4")
|
988
974
|
@main.options = {:cloud => "foo-staging"}
|
@@ -990,9 +976,9 @@ OUT
|
|
990
976
|
end
|
991
977
|
end
|
992
978
|
|
993
|
-
context "cloud is not
|
979
|
+
context "cloud is not running" do
|
994
980
|
it "should print error" do
|
995
|
-
@client.should_receive(:
|
981
|
+
@client.should_receive(:run).with("foo-staging", "2 + 2").
|
996
982
|
and_raise(Shelly::Client::APIException.new(
|
997
983
|
{"message" => "App not running"}, 504))
|
998
984
|
$stdout.should_receive(:puts).
|
@@ -1000,92 +986,12 @@ OUT
|
|
1000
986
|
@main.options = {:cloud => "foo-staging"}
|
1001
987
|
lambda { invoke(@main, :execute, "2 + 2") }.should raise_error(SystemExit)
|
1002
988
|
end
|
1003
|
-
end
|
1004
|
-
end
|
1005
|
-
|
1006
|
-
describe "#rake" do
|
1007
|
-
before do
|
1008
|
-
FileUtils.mkdir_p("/projects/foo")
|
1009
|
-
Dir.chdir("/projects/foo")
|
1010
|
-
File.open("Cloudfile", 'w') {|f| f.write("foo-production:\n") }
|
1011
|
-
@user = Shelly::User.new
|
1012
|
-
@user.stub(:token)
|
1013
|
-
Shelly::User.stub(:new).and_return(@user)
|
1014
|
-
@app = Shelly::App.new
|
1015
|
-
Shelly::App.stub(:new).and_return(@app)
|
1016
|
-
@main.stub(:rake_args).and_return(%w(db:migrate))
|
1017
|
-
end
|
1018
989
|
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
it "should ensure cloudfile present" do
|
1024
|
-
hooks(@main, :execute).should include(:cloudfile_present?)
|
1025
|
-
end
|
1026
|
-
|
1027
|
-
it "should invoke :command on app with rake task" do
|
1028
|
-
@client.should_receive(:command).with("foo-production", "db:migrate", :rake).and_return("result" => "OK")
|
1029
|
-
$stdout.should_receive(:puts).with("OK")
|
1030
|
-
invoke(@main, :rake, "db:migrate")
|
1031
|
-
end
|
1032
|
-
|
1033
|
-
it "should pass rake arguments to the client" do
|
1034
|
-
@main.stub(:rake_args).and_return(%w(-T db:schema))
|
1035
|
-
@client.should_receive(:command).with("foo-production", "-T db:schema", :rake).and_return("result" => "OK")
|
1036
|
-
$stdout.should_receive(:puts).with("OK")
|
1037
|
-
invoke(@main, :rake, nil)
|
1038
|
-
end
|
1039
|
-
|
1040
|
-
describe "#rake_args" do
|
1041
|
-
before { @main.unstub!(:rake_args) }
|
1042
|
-
|
1043
|
-
it "should return Array of rake arguments (skipping shelly gem arguments)" do
|
1044
|
-
argv = %w(rake -T db --cloud foo-production --debug)
|
1045
|
-
@main.rake_args(argv).should == %w(-T db)
|
1046
|
-
end
|
1047
|
-
|
1048
|
-
it "should take ARGV as default default argument" do
|
1049
|
-
# Rather poor, I test if method without args returns the same as method with ARGV
|
1050
|
-
@main.rake_args.should == @main.rake_args(ARGV)
|
1051
|
-
end
|
1052
|
-
end
|
1053
|
-
|
1054
|
-
context "cloud is not in running state" do
|
1055
|
-
it "should print error" do
|
1056
|
-
@client.should_receive(:command).with("foo-staging", "db:migrate", :rake).
|
1057
|
-
and_raise(Shelly::Client::APIException.new(
|
1058
|
-
{"message" => "App not running"}, 504))
|
1059
|
-
$stdout.should_receive(:puts).
|
1060
|
-
with(red "Cloud foo-staging is not running. Cannot run rake task.")
|
1061
|
-
@main.options = {:cloud => "foo-staging"}
|
1062
|
-
lambda { invoke(@main, :rake, "db:migrate") }.should raise_error(SystemExit)
|
1063
|
-
end
|
1064
|
-
end
|
1065
|
-
|
1066
|
-
context "multiple clouds in Cloudfile" do
|
1067
|
-
before do
|
1068
|
-
File.open("Cloudfile", 'w') {|f|
|
1069
|
-
f.write("foo-staging:\nfoo-production:\n") }
|
1070
|
-
end
|
1071
|
-
|
1072
|
-
it "should show information to run rake task for specific cloud and exit" do
|
1073
|
-
$stdout.should_receive(:puts).
|
1074
|
-
with(red "You have multiple clouds in Cloudfile.")
|
1075
|
-
$stdout.should_receive(:puts).
|
1076
|
-
with("Select cloud using `shelly rake db:migrate --cloud foo-production`")
|
1077
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
1078
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
1079
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
1080
|
-
lambda { invoke(@main, :rake, "db:migrate") }.should raise_error(SystemExit)
|
1081
|
-
end
|
1082
|
-
|
1083
|
-
it "should fetch from command line for which cloud run rake task" do
|
1084
|
-
@client.should_receive(:command).with("foo-staging", "db:migrate", :rake).
|
1085
|
-
and_return({"result" => "3"})
|
1086
|
-
$stdout.should_receive(:puts).with("3")
|
990
|
+
it "should re-raise other exceptions" do
|
991
|
+
@client.should_receive(:run).with("foo-staging", "2 + 2").
|
992
|
+
and_raise(Exception)
|
1087
993
|
@main.options = {:cloud => "foo-staging"}
|
1088
|
-
invoke(@main, :
|
994
|
+
lambda { invoke(@main, :execute, "2 + 2") }.should raise_error(Exception)
|
1089
995
|
end
|
1090
996
|
end
|
1091
997
|
end
|
data/spec/shelly/client_spec.rb
CHANGED
@@ -188,11 +188,11 @@ describe Shelly::Client do
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
|
-
describe "#
|
192
|
-
it "should send post request with app code_name
|
193
|
-
|
194
|
-
|
195
|
-
response = @client.
|
191
|
+
describe "#run" do
|
192
|
+
it "should send post request with app code_name and code" do
|
193
|
+
FakeWeb.register_uri(:post, api_url("apps/staging-foo/run"),
|
194
|
+
:body => {:result => "4"}.to_json)
|
195
|
+
response = @client.run("staging-foo", "2 + 2")
|
196
196
|
response.should == {"result" => "4"}
|
197
197
|
end
|
198
198
|
end
|
@@ -244,13 +244,6 @@ describe Shelly::Client do
|
|
244
244
|
end
|
245
245
|
end
|
246
246
|
|
247
|
-
describe "#ssh_key_available?" do
|
248
|
-
it "should send get request with ssh key" do
|
249
|
-
@client.should_receive(:get).with("/users/new", {:ssh_key => "ssh-key Abb"})
|
250
|
-
@client.ssh_key_available?("ssh-key Abb")
|
251
|
-
end
|
252
|
-
end
|
253
|
-
|
254
247
|
describe "#database_backup" do
|
255
248
|
it "should fetch backup description from API" do
|
256
249
|
expected = {
|
data/spec/shelly/user_spec.rb
CHANGED
@@ -123,13 +123,6 @@ describe Shelly::User do
|
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
|
-
describe "#ssh_key_registered?" do
|
127
|
-
it "should read and check if ssh key exists in database" do
|
128
|
-
@client.should_receive(:ssh_key_available?).with('ssh-key AAbbcc')
|
129
|
-
@user.ssh_key_registered?
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
126
|
describe "#delete_ssh_key" do
|
134
127
|
it "should invoke logout when ssh key exists" do
|
135
128
|
@client.should_receive(:logout).with('ssh-key AAbbcc')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.46.
|
4
|
+
version: 0.0.46.pre3
|
5
5
|
prerelease: 7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70197902930340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70197902930340
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70197902929860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70197902929860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: guard
|
38
|
-
requirement: &
|
38
|
+
requirement: &70197902929420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70197902929420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard-rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70197902929000 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70197902929000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
requirement: &
|
60
|
+
requirement: &70197902928580 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70197902928580
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: ruby_gntp
|
71
|
-
requirement: &
|
71
|
+
requirement: &70197902928120 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70197902928120
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rb-fsevent
|
82
|
-
requirement: &
|
82
|
+
requirement: &70197902927700 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70197902927700
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: fakefs
|
93
|
-
requirement: &
|
93
|
+
requirement: &70197902927280 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70197902927280
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: fakeweb
|
104
|
-
requirement: &
|
104
|
+
requirement: &70197902926860 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70197902926860
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: wijet-thor
|
115
|
-
requirement: &
|
115
|
+
requirement: &70197902912840 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 0.14.7
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70197902912840
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: rest-client
|
126
|
-
requirement: &
|
126
|
+
requirement: &70197902912420 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70197902912420
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: json
|
137
|
-
requirement: &
|
137
|
+
requirement: &70197902911960 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :runtime
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70197902911960
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: wijet-launchy
|
148
|
-
requirement: &
|
148
|
+
requirement: &70197902911500 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :runtime
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70197902911500
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: progressbar
|
159
|
-
requirement: &
|
159
|
+
requirement: &70197902911060 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :runtime
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70197902911060
|
168
168
|
description: Tool for managing applications and clouds at shellycloud.com
|
169
169
|
email:
|
170
170
|
- support@shellycloud.com
|