shelly 0.0.39 → 0.0.40
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 +7 -14
- data/lib/shelly/cli/main.rb +3 -3
- data/lib/shelly/client.rb +4 -4
- data/lib/shelly/version.rb +1 -1
- data/lib/thor/thor.rb +1 -1
- data/spec/shelly/app_spec.rb +7 -24
- data/spec/shelly/cli/main_spec.rb +16 -2
- data/spec/shelly/client_spec.rb +6 -7
- metadata +129 -183
data/lib/shelly/app.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'launchy'
|
3
|
-
require "shelly/backup"
|
4
3
|
|
5
4
|
module Shelly
|
6
5
|
class App < Model
|
7
6
|
DATABASE_KINDS = %w(postgresql mongodb redis none)
|
8
7
|
|
9
8
|
attr_accessor :code_name, :databases, :ruby_version, :environment,
|
10
|
-
:git_url, :domains
|
9
|
+
:git_url, :domains
|
10
|
+
|
11
|
+
autoload :Backup, "shelly/backup"
|
11
12
|
|
12
13
|
def initialize(code_name = nil)
|
13
14
|
self.code_name = code_name
|
@@ -98,6 +99,10 @@ module Shelly
|
|
98
99
|
File.basename(Dir.pwd)
|
99
100
|
end
|
100
101
|
|
102
|
+
def ips
|
103
|
+
shelly.app_ips(code_name)
|
104
|
+
end
|
105
|
+
|
101
106
|
def users
|
102
107
|
shelly.app_users(code_name)
|
103
108
|
end
|
@@ -130,18 +135,6 @@ module Shelly
|
|
130
135
|
shelly.app_delete_config(code_name, path)
|
131
136
|
end
|
132
137
|
|
133
|
-
def attributes
|
134
|
-
@attributes ||= shelly.app(code_name)
|
135
|
-
end
|
136
|
-
|
137
|
-
def web_server_ip
|
138
|
-
attributes["web_server_ip"]
|
139
|
-
end
|
140
|
-
|
141
|
-
def mail_server_ip
|
142
|
-
attributes["mail_server_ip"]
|
143
|
-
end
|
144
|
-
|
145
138
|
def open_billing_page
|
146
139
|
url = "#{shelly.shellyapp_url}/login?api_key=#{current_user.token}&return_to=/apps/#{code_name}/edit_billing"
|
147
140
|
Launchy.open(url)
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -143,14 +143,14 @@ module Shelly
|
|
143
143
|
|
144
144
|
desc "ip", "Lists clouds IP's"
|
145
145
|
def ip
|
146
|
-
say_error "No Cloudfile found" unless Cloudfile.present?
|
147
146
|
@cloudfile = Cloudfile.new
|
148
147
|
@cloudfile.clouds.each do |cloud|
|
149
148
|
begin
|
150
149
|
@app = App.new(cloud)
|
151
150
|
say "Cloud #{cloud}:", :green
|
152
|
-
|
153
|
-
print_wrapped "
|
151
|
+
ips = @app.ips
|
152
|
+
print_wrapped "Web server IP: #{ips['web_server_ip']}", :ident => 2
|
153
|
+
print_wrapped "Mail server IP: #{ips['mail_server_ip']}", :ident => 2
|
154
154
|
rescue Client::APIError => e
|
155
155
|
if e.unauthorized?
|
156
156
|
say_error "You have no access to '#{cloud}' cloud defined in Cloudfile", :with_exit => false
|
data/lib/shelly/client.rb
CHANGED
@@ -115,10 +115,6 @@ module Shelly
|
|
115
115
|
def apps
|
116
116
|
get("/apps")
|
117
117
|
end
|
118
|
-
|
119
|
-
def app(code_name)
|
120
|
-
get("/apps/#{code_name}")
|
121
|
-
end
|
122
118
|
|
123
119
|
def deploy_logs(cloud)
|
124
120
|
get("/apps/#{cloud}/deploys")
|
@@ -152,6 +148,10 @@ module Shelly
|
|
152
148
|
get("/apps/#{cloud}/users")
|
153
149
|
end
|
154
150
|
|
151
|
+
def app_ips(cloud)
|
152
|
+
get("/apps/#{cloud}/ips")
|
153
|
+
end
|
154
|
+
|
155
155
|
def post(path, params = {})
|
156
156
|
request(path, :post, params)
|
157
157
|
end
|
data/lib/shelly/version.rb
CHANGED
data/lib/thor/thor.rb
CHANGED
data/spec/shelly/app_spec.rb
CHANGED
@@ -24,6 +24,13 @@ describe Shelly::App do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
describe "#ips" do
|
28
|
+
it "should get app's ips" do
|
29
|
+
@client.should_receive(:app_ips).with("foo-staging")
|
30
|
+
@app.ips
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
27
34
|
describe "#add_git_remote" do
|
28
35
|
before do
|
29
36
|
@app.stub(:git_url).and_return("git@git.shellycloud.com:foo-staging.git")
|
@@ -57,30 +64,6 @@ describe Shelly::App do
|
|
57
64
|
@app.shelly_generated_configs
|
58
65
|
end
|
59
66
|
end
|
60
|
-
|
61
|
-
describe "#attributes" do
|
62
|
-
before do
|
63
|
-
@response = {"web_server_ip" => "192.0.2.1", "mail_server_ip" => "192.0.2.3"}
|
64
|
-
@client.stub(:app).and_return(@response)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should fetch app attributes from API and cache them" do
|
68
|
-
@client.should_receive(:app).with("foo-staging").exactly(:once).and_return(@response)
|
69
|
-
2.times { @app.attributes }
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "#web_server_ip" do
|
73
|
-
it "should return web server ip address" do
|
74
|
-
@app.web_server_ip.should == "192.0.2.1"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe "#mail_server_ip" do
|
79
|
-
it "should return mail server ip address" do
|
80
|
-
@app.mail_server_ip.should == "192.0.2.3"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
67
|
|
85
68
|
describe "#generate_cloudfile" do
|
86
69
|
it "should return generated cloudfile" do
|
@@ -673,6 +673,14 @@ OUT
|
|
673
673
|
Shelly::App.stub(:inside_git_repository?).and_return(true)
|
674
674
|
end
|
675
675
|
|
676
|
+
it "should exit with message if command run outside git repository" do
|
677
|
+
Shelly::App.stub(:inside_git_repository?).and_return(false)
|
678
|
+
$stdout.should_receive(:puts).with("\e[31mMust be run inside your project git repository\e[0m")
|
679
|
+
lambda {
|
680
|
+
invoke(@main, :ip)
|
681
|
+
}.should raise_error(SystemExit)
|
682
|
+
end
|
683
|
+
|
676
684
|
it "should exit with message if there is no Cloudfile" do
|
677
685
|
File.delete("Cloudfile")
|
678
686
|
$stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
|
@@ -683,7 +691,7 @@ OUT
|
|
683
691
|
|
684
692
|
context "on success" do
|
685
693
|
it "should display mail and web server ip's" do
|
686
|
-
@client.stub(:
|
694
|
+
@client.stub(:app_ips).and_return(response)
|
687
695
|
$stdout.should_receive(:puts).with("\e[32mCloud foo-production:\e[0m")
|
688
696
|
$stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
|
689
697
|
$stdout.should_receive(:puts).with(" Mail server IP: 11.11.11.11")
|
@@ -696,10 +704,16 @@ OUT
|
|
696
704
|
end
|
697
705
|
|
698
706
|
context "on failure" do
|
707
|
+
it "should raise an error if user is not in git repository" do
|
708
|
+
Shelly::App.stub(:inside_git_repository?).and_return(false)
|
709
|
+
$stdout.should_receive(:puts).with("\e[31mMust be run inside your project git repository\e[0m")
|
710
|
+
lambda { invoke(@main, :ip) }.should raise_error(SystemExit)
|
711
|
+
end
|
712
|
+
|
699
713
|
it "should raise an error if user does not have access to cloud" do
|
700
714
|
response = {"message" => "Cloud foo-staging not found"}
|
701
715
|
exception = Shelly::Client::APIError.new(response.to_json, 404)
|
702
|
-
@client.stub(:
|
716
|
+
@client.stub(:app_ips).and_raise(exception)
|
703
717
|
$stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
|
704
718
|
invoke(@main, :ip)
|
705
719
|
end
|
data/spec/shelly/client_spec.rb
CHANGED
@@ -167,13 +167,12 @@ describe Shelly::Client do
|
|
167
167
|
response.should == [{"email" => "test@example.com"}, {"email" => "test2@example.com"}]
|
168
168
|
end
|
169
169
|
end
|
170
|
-
|
171
|
-
describe "#
|
172
|
-
it "should
|
173
|
-
FakeWeb.register_uri(:get, api_url("apps/staging-foo"),
|
174
|
-
|
175
|
-
response
|
176
|
-
response.should == {"web_server_ip" => "192.0.2.1", "mail_server_ip" => "192.0.2.3"}
|
170
|
+
|
171
|
+
describe "#app_ips" do
|
172
|
+
it "should send get request with app code_name" do
|
173
|
+
FakeWeb.register_uri(:get, api_url("apps/staging-foo/ips"), :body => {:mail_server_ip => "10.0.1.1", :web_server_ip => "88.198.21.187"}.to_json)
|
174
|
+
response = @client.app_ips("staging-foo")
|
175
|
+
response.should == {"mail_server_ip" => "10.0.1.1", "web_server_ip" => "88.198.21.187"}
|
177
176
|
end
|
178
177
|
end
|
179
178
|
|
metadata
CHANGED
@@ -1,217 +1,167 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.40
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 39
|
10
|
-
version: 0.0.39
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Shelly Cloud team
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-12-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rspec
|
16
|
+
requirement: &70136906680620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
23
22
|
type: :development
|
24
23
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
|
27
|
-
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
34
|
-
requirement: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
version_requirements: *70136906680620
|
25
|
+
- !ruby/object:Gem::Dependency
|
36
26
|
name: rake
|
27
|
+
requirement: &70136906696580 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
37
33
|
type: :development
|
38
34
|
prerelease: false
|
39
|
-
version_requirements:
|
40
|
-
|
41
|
-
requirements:
|
42
|
-
- - ">="
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 3
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
version: "0"
|
48
|
-
requirement: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *70136906696580
|
36
|
+
- !ruby/object:Gem::Dependency
|
50
37
|
name: guard
|
38
|
+
requirement: &70136906696160 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
51
44
|
type: :development
|
52
45
|
prerelease: false
|
53
|
-
version_requirements:
|
54
|
-
|
55
|
-
requirements:
|
56
|
-
- - ">="
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 3
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
version: "0"
|
62
|
-
requirement: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
version_requirements: *70136906696160
|
47
|
+
- !ruby/object:Gem::Dependency
|
64
48
|
name: guard-rspec
|
49
|
+
requirement: &70136906695740 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
65
55
|
type: :development
|
66
56
|
prerelease: false
|
67
|
-
version_requirements:
|
68
|
-
|
69
|
-
requirements:
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
hash: 3
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
76
|
-
requirement: *id004
|
77
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
version_requirements: *70136906695740
|
58
|
+
- !ruby/object:Gem::Dependency
|
78
59
|
name: growl_notify
|
60
|
+
requirement: &70136906695280 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
79
66
|
type: :development
|
80
67
|
prerelease: false
|
81
|
-
version_requirements:
|
82
|
-
|
83
|
-
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
hash: 3
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
90
|
-
requirement: *id005
|
91
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
version_requirements: *70136906695280
|
69
|
+
- !ruby/object:Gem::Dependency
|
92
70
|
name: rb-fsevent
|
71
|
+
requirement: &70136906694860 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
93
77
|
type: :development
|
94
78
|
prerelease: false
|
95
|
-
version_requirements:
|
96
|
-
|
97
|
-
requirements:
|
98
|
-
- - ">="
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
hash: 3
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
version: "0"
|
104
|
-
requirement: *id006
|
105
|
-
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: *70136906694860
|
80
|
+
- !ruby/object:Gem::Dependency
|
106
81
|
name: fakefs
|
82
|
+
requirement: &70136906694440 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
107
88
|
type: :development
|
108
89
|
prerelease: false
|
109
|
-
version_requirements:
|
110
|
-
|
111
|
-
requirements:
|
112
|
-
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
hash: 3
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
version: "0"
|
118
|
-
requirement: *id007
|
119
|
-
- !ruby/object:Gem::Dependency
|
90
|
+
version_requirements: *70136906694440
|
91
|
+
- !ruby/object:Gem::Dependency
|
120
92
|
name: fakeweb
|
93
|
+
requirement: &70136906694020 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
121
99
|
type: :development
|
122
100
|
prerelease: false
|
123
|
-
version_requirements:
|
124
|
-
|
125
|
-
requirements:
|
126
|
-
- - ">="
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
hash: 3
|
129
|
-
segments:
|
130
|
-
- 0
|
131
|
-
version: "0"
|
132
|
-
requirement: *id008
|
133
|
-
- !ruby/object:Gem::Dependency
|
101
|
+
version_requirements: *70136906694020
|
102
|
+
- !ruby/object:Gem::Dependency
|
134
103
|
name: wijet-thor
|
135
|
-
|
136
|
-
prerelease: false
|
137
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
104
|
+
requirement: &70136906693520 !ruby/object:Gem::Requirement
|
138
105
|
none: false
|
139
|
-
requirements:
|
106
|
+
requirements:
|
140
107
|
- - ~>
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
hash: 41
|
143
|
-
segments:
|
144
|
-
- 0
|
145
|
-
- 14
|
146
|
-
- 7
|
108
|
+
- !ruby/object:Gem::Version
|
147
109
|
version: 0.14.7
|
148
|
-
requirement: *id009
|
149
|
-
- !ruby/object:Gem::Dependency
|
150
|
-
name: rest-client
|
151
110
|
type: :runtime
|
152
111
|
prerelease: false
|
153
|
-
version_requirements:
|
112
|
+
version_requirements: *70136906693520
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: rest-client
|
115
|
+
requirement: &70136906693100 !ruby/object:Gem::Requirement
|
154
116
|
none: false
|
155
|
-
requirements:
|
156
|
-
- -
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
|
159
|
-
segments:
|
160
|
-
- 0
|
161
|
-
version: "0"
|
162
|
-
requirement: *id010
|
163
|
-
- !ruby/object:Gem::Dependency
|
164
|
-
name: json
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
165
121
|
type: :runtime
|
166
122
|
prerelease: false
|
167
|
-
version_requirements:
|
123
|
+
version_requirements: *70136906693100
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: json
|
126
|
+
requirement: &70136906692640 !ruby/object:Gem::Requirement
|
168
127
|
none: false
|
169
|
-
requirements:
|
170
|
-
- -
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
|
173
|
-
segments:
|
174
|
-
- 0
|
175
|
-
version: "0"
|
176
|
-
requirement: *id011
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
|
-
name: wijet-launchy
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
179
132
|
type: :runtime
|
180
133
|
prerelease: false
|
181
|
-
version_requirements:
|
134
|
+
version_requirements: *70136906692640
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: wijet-launchy
|
137
|
+
requirement: &70136906692220 !ruby/object:Gem::Requirement
|
182
138
|
none: false
|
183
|
-
requirements:
|
184
|
-
- -
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
|
187
|
-
segments:
|
188
|
-
- 0
|
189
|
-
version: "0"
|
190
|
-
requirement: *id012
|
191
|
-
- !ruby/object:Gem::Dependency
|
192
|
-
name: progressbar
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
193
143
|
type: :runtime
|
194
144
|
prerelease: false
|
195
|
-
version_requirements:
|
145
|
+
version_requirements: *70136906692220
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: progressbar
|
148
|
+
requirement: &70136906691800 !ruby/object:Gem::Requirement
|
196
149
|
none: false
|
197
|
-
requirements:
|
198
|
-
- -
|
199
|
-
- !ruby/object:Gem::Version
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
requirement: *id013
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
type: :runtime
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: *70136906691800
|
205
157
|
description: Tool for managing applications and clouds at shellycloud.com
|
206
|
-
email:
|
158
|
+
email:
|
207
159
|
- support@shellycloud.com
|
208
|
-
executables:
|
160
|
+
executables:
|
209
161
|
- shelly
|
210
162
|
extensions: []
|
211
|
-
|
212
163
|
extra_rdoc_files: []
|
213
|
-
|
214
|
-
files:
|
164
|
+
files:
|
215
165
|
- .gitignore
|
216
166
|
- .travis.yml
|
217
167
|
- Gemfile
|
@@ -261,41 +211,37 @@ files:
|
|
261
211
|
- spec/shelly/user_spec.rb
|
262
212
|
- spec/spec_helper.rb
|
263
213
|
- spec/thor/options_spec.rb
|
264
|
-
has_rdoc: true
|
265
214
|
homepage: http://shellycloud.com
|
266
215
|
licenses: []
|
267
|
-
|
268
216
|
post_install_message:
|
269
217
|
rdoc_options: []
|
270
|
-
|
271
|
-
require_paths:
|
218
|
+
require_paths:
|
272
219
|
- lib
|
273
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
220
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
274
221
|
none: false
|
275
|
-
requirements:
|
276
|
-
- -
|
277
|
-
- !ruby/object:Gem::Version
|
278
|
-
|
279
|
-
segments:
|
222
|
+
requirements:
|
223
|
+
- - ! '>='
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
version: '0'
|
226
|
+
segments:
|
280
227
|
- 0
|
281
|
-
|
282
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
|
+
hash: 2595737964624093032
|
229
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
283
230
|
none: false
|
284
|
-
requirements:
|
285
|
-
- -
|
286
|
-
- !ruby/object:Gem::Version
|
287
|
-
|
288
|
-
segments:
|
231
|
+
requirements:
|
232
|
+
- - ! '>='
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '0'
|
235
|
+
segments:
|
289
236
|
- 0
|
290
|
-
|
237
|
+
hash: 2595737964624093032
|
291
238
|
requirements: []
|
292
|
-
|
293
239
|
rubyforge_project: shelly
|
294
|
-
rubygems_version: 1.
|
240
|
+
rubygems_version: 1.8.11
|
295
241
|
signing_key:
|
296
242
|
specification_version: 3
|
297
243
|
summary: Shelly Cloud command line tool
|
298
|
-
test_files:
|
244
|
+
test_files:
|
299
245
|
- spec/helpers.rb
|
300
246
|
- spec/input_faker.rb
|
301
247
|
- spec/shelly/app_spec.rb
|