shelly 0.2.20 → 0.2.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ M2E2MzQxMDcyNzUwM2RhMWE5OTZlNWM4MGFhODFjN2Q2YWI3YjcyNA==
5
+ data.tar.gz: !binary |-
6
+ YTVkMDU5NmZhYTFlYWExNTNiYzE5YzYzYThmMTYzODliMDQ1NGU4ZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZTI3YmJmZjliYjk4ZDU1MGNjMDNkNGY5NTdkNGI3ZGRjMTY4ZGMwN2JjZjQ5
10
+ YWZjMGQ0YjEyNzI4MDAyMWFhNjNiN2VlOTkxNjM4OGNkZGY5ZDU5NTZhNDk4
11
+ OGI5ZjNlZDFlZGM4YzU5N2NmM2Y2MWM1N2JlNmNlZjIwNDE2YzA=
12
+ data.tar.gz: !binary |-
13
+ NTUwMzg3ZTkwY2I4Mzk0ZjMzNzE3MTkzY2EyOWZmNGQzODIyNWU2NmYwMTQz
14
+ Y2I2YzgyOTU3MzczZDNjMzU0NzBmMTg5OGViNWViYTQ4ODE3ZmQxNzI3ZjYy
15
+ ZWNhNmY3Y2U3MTlhZmJkNTYzZTA5ZmUzZWFjODgzOTE0MmEwODU=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.2.21 / 2013-05-13
2
+
3
+ * [improvement] require 'puma' or 'thin' gems if present in Cloudfile when running `shelly check`
4
+
1
5
  ## 0.2.20 / 2013-05-09
2
6
 
3
7
  * [improvement] `shelly info`, `shelly list` and `shelly organization list` now use the new state_description attribute returned by Shelly API
data/lib/shelly/app.rb CHANGED
@@ -297,6 +297,18 @@ module Shelly
297
297
  option?("sidekiq")
298
298
  end
299
299
 
300
+ # Public: Thin app servers present?
301
+ # Returns true if thin is present
302
+ def thin?
303
+ option?("thin")
304
+ end
305
+
306
+ # Public: Puma app servers present?
307
+ # Returns true if puma is present
308
+ def puma?
309
+ option?("puma")
310
+ end
311
+
300
312
  # Public: Return databases to backup for given Cloud in Cloudfile
301
313
  # Returns Array of databases, except redis db
302
314
  def backup_databases
@@ -446,7 +446,7 @@ Wait until cloud is in 'turned off' state and try again.}
446
446
  print_check(structure.gem?("thin") || structure.gem?("puma"),
447
447
  "Web server gem is present",
448
448
  "Missing web server gem in Gemfile. Currently supported: 'thin' and 'puma'",
449
- :show_fulfilled => verbose)
449
+ :show_fulfilled => verbose, :failure_level => :warning)
450
450
 
451
451
  print_check(structure.gem?("rake"), "Gem 'rake' is present",
452
452
  "Gem 'rake' is missing in the Gemfile", :show_fulfilled => verbose)
@@ -487,6 +487,20 @@ Wait until cloud is in 'turned off' state and try again.}
487
487
  "Gem 'sidekiq' is missing in the Gemfile for '#{app}' cloud",
488
488
  :show_fulfilled => verbose)
489
489
  end
490
+
491
+ if app.thin?
492
+ print_check(structure.gem?("thin"),
493
+ "Web server gem 'thin' is present",
494
+ "Gem 'thin' is missing in the Gemfile for '#{app}' cloud",
495
+ :show_fulfilled => verbose)
496
+ end
497
+
498
+ if app.puma?
499
+ print_check(structure.gem?("puma"),
500
+ "Web server gem 'puma' is present",
501
+ "Gem 'puma' is missing in the Gemfile for '#{app}' cloud",
502
+ :show_fulfilled => verbose)
503
+ end
490
504
  end
491
505
  end
492
506
 
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.2.20"
2
+ VERSION = "0.2.21"
3
3
  end
@@ -493,6 +493,34 @@ describe Shelly::App do
493
493
  end
494
494
  end
495
495
 
496
+ describe "#thin?" do
497
+ it "should return true if present" do
498
+ content = {"servers" => {"app1" => {"thin" => 1}}}
499
+ @app.stub(:content).and_return(content)
500
+ @app.thin?.should be_true
501
+ end
502
+
503
+ it "should return false if not present" do
504
+ content = {"servers" => {"app1" => {"size" => "small"}}}
505
+ @app.stub(:content).and_return(content)
506
+ @app.thin?.should be_false
507
+ end
508
+ end
509
+
510
+ describe "#puma?" do
511
+ it "should return true if present" do
512
+ content = {"servers" => {"app1" => {"puma" => true}}}
513
+ @app.stub(:content).and_return(content)
514
+ @app.puma?.should be_true
515
+ end
516
+
517
+ it "should return false if not present" do
518
+ content = {"servers" => {"app1" => {"size" => "small"}}}
519
+ @app.stub(:content).and_return(content)
520
+ @app.puma?.should be_false
521
+ end
522
+ end
523
+
496
524
  describe "#application_logs_tail" do
497
525
  it "should execute given block for logs fetched from API" do
498
526
  @client.should_receive(:application_logs_tail).with("foo-staging").and_yield("GET / 127.0.0.1")
@@ -1557,7 +1557,7 @@ Wait until cloud is in 'turned off' state and try again.")
1557
1557
  context "when neither thin nor puma present in Gemfile" do
1558
1558
  it "should show that necessary gem doesn't exist" do
1559
1559
  Bundler::Definition.stub_chain(:build, :specs, :map).and_return([])
1560
- $stdout.should_receive(:puts).with(" #{red("")} Missing web server gem in Gemfile. Currently supported: 'thin' and 'puma'")
1560
+ $stdout.should_receive(:puts).with(" #{yellow("ϟ")} Missing web server gem in Gemfile. Currently supported: 'thin' and 'puma'")
1561
1561
  invoke(@main, :check)
1562
1562
  end
1563
1563
  end
@@ -1612,7 +1612,7 @@ Wait until cloud is in 'turned off' state and try again.")
1612
1612
  before do
1613
1613
  cloud = mock(:code_name => "foo-staging", :cloud_databases => ["postgresql"],
1614
1614
  :whenever? => true, :delayed_job? => true, :sidekiq? => true,
1615
- :to_s => "foo-staging")
1615
+ :thin? => true, :puma? => true, :to_s => "foo-staging")
1616
1616
  cloudfile = mock(:clouds => [cloud])
1617
1617
 
1618
1618
  Shelly::Cloudfile.stub(:new).and_return(cloudfile)
@@ -1676,6 +1676,34 @@ Wait until cloud is in 'turned off' state and try again.")
1676
1676
  invoke(@main, :check)
1677
1677
  end
1678
1678
  end
1679
+
1680
+ context "thin web server" do
1681
+ it "should show that necessary gem doesn't exist" do
1682
+ Bundler::Definition.stub_chain(:build, :specs, :map).and_return([])
1683
+ $stdout.should_receive(:puts).with(" #{red("✗")} Gem 'thin' is missing in the Gemfile for 'foo-staging' cloud")
1684
+ invoke(@main, :check)
1685
+ end
1686
+
1687
+ it "should show that necessary gem exists" do
1688
+ Bundler::Definition.stub_chain(:build, :specs, :map).and_return(["thin"])
1689
+ $stdout.should_receive(:puts).with(" #{green("✓")} Web server gem 'thin' is present")
1690
+ invoke(@main, :check)
1691
+ end
1692
+ end
1693
+
1694
+ context "puma web server" do
1695
+ it "should show that necessary gem doesn't exist" do
1696
+ Bundler::Definition.stub_chain(:build, :specs, :map).and_return([])
1697
+ $stdout.should_receive(:puts).with(" #{red("✗")} Gem 'puma' is missing in the Gemfile for 'foo-staging' cloud")
1698
+ invoke(@main, :check)
1699
+ end
1700
+
1701
+ it "should show that necessary gem exists" do
1702
+ Bundler::Definition.stub_chain(:build, :specs, :map).and_return(["puma"])
1703
+ $stdout.should_receive(:puts).with(" #{green("✓")} Web server gem 'puma' is present")
1704
+ invoke(@main, :check)
1705
+ end
1706
+ end
1679
1707
  end
1680
1708
 
1681
1709
  context "when bundler raise error" do
metadata CHANGED
@@ -1,204 +1,207 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.20
4
+ version: 0.2.21
6
5
  platform: ruby
7
6
  authors:
8
7
  - Shelly Cloud team
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-09 00:00:00.000000000 Z
11
+ date: 2013-05-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- prerelease: false
16
- type: :development
17
14
  name: rspec
18
- version_requirements: !ruby/object:Gem::Requirement
19
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
20
16
  requirements:
21
17
  - - ~>
22
18
  - !ruby/object:Gem::Version
23
19
  version: 2.11.0
24
- requirement: !ruby/object:Gem::Requirement
25
- none: false
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
26
  version: 2.11.0
30
27
  - !ruby/object:Gem::Dependency
31
- prerelease: false
32
- type: :development
33
28
  name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
34
36
  version_requirements: !ruby/object:Gem::Requirement
35
- none: false
36
37
  requirements:
37
38
  - - ! '>='
38
39
  - !ruby/object:Gem::Version
39
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard
40
43
  requirement: !ruby/object:Gem::Requirement
41
- none: false
42
44
  requirements:
43
45
  - - ! '>='
44
46
  - !ruby/object:Gem::Version
45
47
  version: '0'
46
- - !ruby/object:Gem::Dependency
47
- prerelease: false
48
48
  type: :development
49
- name: guard
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
- none: false
52
51
  requirements:
53
52
  - - ! '>='
54
53
  - !ruby/object:Gem::Version
55
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard-rspec
56
57
  requirement: !ruby/object:Gem::Requirement
57
- none: false
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- prerelease: false
64
62
  type: :development
65
- name: guard-rspec
63
+ prerelease: false
66
64
  version_requirements: !ruby/object:Gem::Requirement
67
- none: false
68
65
  requirements:
69
66
  - - ! '>='
70
67
  - !ruby/object:Gem::Version
71
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
72
71
  requirement: !ruby/object:Gem::Requirement
73
- none: false
74
72
  requirements:
75
73
  - - ! '>='
76
74
  - !ruby/object:Gem::Version
77
75
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- prerelease: false
80
76
  type: :development
81
- name: simplecov
77
+ prerelease: false
82
78
  version_requirements: !ruby/object:Gem::Requirement
83
- none: false
84
79
  requirements:
85
80
  - - ! '>='
86
81
  - !ruby/object:Gem::Version
87
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby_gntp
88
85
  requirement: !ruby/object:Gem::Requirement
89
- none: false
90
86
  requirements:
91
87
  - - ! '>='
92
88
  - !ruby/object:Gem::Version
93
89
  version: '0'
94
- - !ruby/object:Gem::Dependency
95
- prerelease: false
96
90
  type: :development
97
- name: fakefs
91
+ prerelease: false
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
- none: false
100
93
  requirements:
101
94
  - - ! '>='
102
95
  - !ruby/object:Gem::Version
103
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rb-fsevent
104
99
  requirement: !ruby/object:Gem::Requirement
105
- none: false
106
100
  requirements:
107
101
  - - ! '>='
108
102
  - !ruby/object:Gem::Version
109
103
  version: '0'
110
- - !ruby/object:Gem::Dependency
111
- prerelease: false
112
104
  type: :development
113
- name: fakeweb
105
+ prerelease: false
114
106
  version_requirements: !ruby/object:Gem::Requirement
115
- none: false
116
107
  requirements:
117
108
  - - ! '>='
118
109
  - !ruby/object:Gem::Version
119
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fakefs
120
113
  requirement: !ruby/object:Gem::Requirement
121
- none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
122
121
  requirements:
123
122
  - - ! '>='
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
126
+ name: fakeweb
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
127
133
  prerelease: false
128
- type: :runtime
129
- name: wijet-thor
130
134
  version_requirements: !ruby/object:Gem::Requirement
131
- none: false
132
135
  requirements:
133
- - - ~>
136
+ - - ! '>='
134
137
  - !ruby/object:Gem::Version
135
- version: 0.14.9
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: wijet-thor
136
141
  requirement: !ruby/object:Gem::Requirement
137
- none: false
138
142
  requirements:
139
143
  - - ~>
140
144
  - !ruby/object:Gem::Version
141
145
  version: 0.14.9
142
- - !ruby/object:Gem::Dependency
143
- prerelease: false
144
146
  type: :runtime
145
- name: rest-client
147
+ prerelease: false
146
148
  version_requirements: !ruby/object:Gem::Requirement
147
- none: false
148
149
  requirements:
149
- - - ! '>='
150
+ - - ~>
150
151
  - !ruby/object:Gem::Version
151
- version: '0'
152
+ version: 0.14.9
153
+ - !ruby/object:Gem::Dependency
154
+ name: rest-client
152
155
  requirement: !ruby/object:Gem::Requirement
153
- none: false
154
156
  requirements:
155
157
  - - ! '>='
156
158
  - !ruby/object:Gem::Version
157
159
  version: '0'
158
- - !ruby/object:Gem::Dependency
159
- prerelease: false
160
160
  type: :runtime
161
- name: json
161
+ prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
- none: false
164
163
  requirements:
165
164
  - - ! '>='
166
165
  - !ruby/object:Gem::Version
167
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: json
168
169
  requirement: !ruby/object:Gem::Requirement
169
- none: false
170
170
  requirements:
171
171
  - - ! '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
- - !ruby/object:Gem::Dependency
175
- prerelease: false
176
174
  type: :runtime
177
- name: progressbar
175
+ prerelease: false
178
176
  version_requirements: !ruby/object:Gem::Requirement
179
- none: false
180
177
  requirements:
181
178
  - - ! '>='
182
179
  - !ruby/object:Gem::Version
183
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: progressbar
184
183
  requirement: !ruby/object:Gem::Requirement
185
- none: false
186
184
  requirements:
187
185
  - - ! '>='
188
186
  - !ruby/object:Gem::Version
189
187
  version: '0'
190
- - !ruby/object:Gem::Dependency
191
- prerelease: false
192
188
  type: :runtime
193
- name: launchy
189
+ prerelease: false
194
190
  version_requirements: !ruby/object:Gem::Requirement
195
- none: false
196
191
  requirements:
197
192
  - - ! '>='
198
193
  - !ruby/object:Gem::Version
199
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: launchy
200
197
  requirement: !ruby/object:Gem::Requirement
201
- none: false
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
202
205
  requirements:
203
206
  - - ! '>='
204
207
  - !ruby/object:Gem::Version
@@ -273,26 +276,46 @@ files:
273
276
  - spec/thor/options_spec.rb
274
277
  homepage: http://shellycloud.com
275
278
  licenses: []
279
+ metadata: {}
276
280
  post_install_message:
277
281
  rdoc_options: []
278
282
  require_paths:
279
283
  - lib
280
284
  required_ruby_version: !ruby/object:Gem::Requirement
281
- none: false
282
285
  requirements:
283
286
  - - ! '>='
284
287
  - !ruby/object:Gem::Version
285
288
  version: '0'
286
289
  required_rubygems_version: !ruby/object:Gem::Requirement
287
- none: false
288
290
  requirements:
289
291
  - - ! '>='
290
292
  - !ruby/object:Gem::Version
291
293
  version: '0'
292
294
  requirements: []
293
295
  rubyforge_project: shelly
294
- rubygems_version: 1.8.25
296
+ rubygems_version: 2.0.3
295
297
  signing_key:
296
- specification_version: 3
298
+ specification_version: 4
297
299
  summary: Shelly Cloud command line tool
298
- test_files: []
300
+ test_files:
301
+ - spec/helpers.rb
302
+ - spec/input_faker.rb
303
+ - spec/shelly/app_spec.rb
304
+ - spec/shelly/backup_spec.rb
305
+ - spec/shelly/cli/backup_spec.rb
306
+ - spec/shelly/cli/config_spec.rb
307
+ - spec/shelly/cli/deploy_spec.rb
308
+ - spec/shelly/cli/file_spec.rb
309
+ - spec/shelly/cli/main_spec.rb
310
+ - spec/shelly/cli/organization_spec.rb
311
+ - spec/shelly/cli/runner_spec.rb
312
+ - spec/shelly/cli/user_spec.rb
313
+ - spec/shelly/client_spec.rb
314
+ - spec/shelly/cloudfile_spec.rb
315
+ - spec/shelly/download_progress_bar_spec.rb
316
+ - spec/shelly/model_spec.rb
317
+ - spec/shelly/organization_spec.rb
318
+ - spec/shelly/structure_validator_spec.rb
319
+ - spec/shelly/user_spec.rb
320
+ - spec/spec_helper.rb
321
+ - spec/thor/options_spec.rb