shelly 0.0.21.pre5 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
data/lib/shelly/app.rb CHANGED
@@ -4,9 +4,12 @@ require 'launchy'
4
4
  module Shelly
5
5
  class App < Model
6
6
  DATABASE_KINDS = %w(postgresql mongodb redis none)
7
+ attr_accessor :code_name, :databases, :ruby_version, :environment, :git_url, :domains
7
8
 
8
- attr_accessor :code_name, :databases, :ruby_version, :environment,
9
- :git_url, :domains
9
+ def initialize
10
+ @ruby_version = "MRI-1.9.2"
11
+ @environment = "production"
12
+ end
10
13
 
11
14
  def add_git_remote
12
15
  system("git remote rm production > /dev/null 2>&1")
@@ -15,6 +18,8 @@ module Shelly
15
18
 
16
19
  def generate_cloudfile
17
20
  @email = current_user.email
21
+ @databases = databases
22
+ @domains = domains
18
23
  template = File.read(cloudfile_template_path)
19
24
  cloudfile = ERB.new(template, 0, "%<>-")
20
25
  cloudfile.result(binding)
@@ -25,12 +30,16 @@ module Shelly
25
30
  end
26
31
 
27
32
  def create
28
- attributes = {:name => code_name, :code_name => code_name, :domains => domains}
33
+ attributes = {
34
+ :name => code_name,
35
+ :code_name => code_name,
36
+ :environment => environment,
37
+ :ruby_version => ruby_version,
38
+ :domain_name => domains ? domains.join(" ") : nil
39
+ }
29
40
  response = shelly.create_app(attributes)
30
41
  self.git_url = response["git_url"]
31
- self.domains = response["domains"]
32
- self.ruby_version = response["ruby_version"]
33
- self.environment = response["environment"]
42
+ self.domains = response["domain_name"].split if domains.nil?
34
43
  end
35
44
 
36
45
  def create_cloudfile
@@ -47,12 +47,8 @@ module Shelly
47
47
  user = Shelly::User.new(email || ask_for_email, ask_for_password(:with_confirmation => false))
48
48
  user.login
49
49
  say "Login successful"
50
- begin user.upload_ssh_key
51
- conflict = false
52
- rescue RestClient::Conflict
53
- conflict = true
54
- end
55
- say "Uploading your public SSH key" if conflict == false
50
+ say "Uploading your public SSH key"
51
+ user.upload_ssh_key
56
52
  say "You have following clouds available:", :green
57
53
  user.apps.each do |app|
58
54
  say " #{app["code_name"]}"
@@ -60,13 +56,14 @@ module Shelly
60
56
  rescue Client::APIError => e
61
57
  if e.validation?
62
58
  e.each_error { |error| say_error "#{error}", :with_exit => false }
59
+ exit 1
63
60
  end
64
61
  if e.unauthorized?
65
62
  say_error "Wrong email or password", :with_exit => false
66
63
  say_error "You can reset password by using link:", :with_exit => false
67
64
  say_error "#{e.url}", :with_exit => false
65
+ exit 1
68
66
  end
69
- exit 1
70
67
  end
71
68
 
72
69
  method_option "code-name", :type => :string, :aliases => "-c",
data/lib/shelly/client.rb CHANGED
@@ -64,8 +64,8 @@ module Shelly
64
64
  post("/apps", :app => attributes)
65
65
  end
66
66
 
67
- def add_ssh_key(ssh_key)
68
- post("/ssh_key", :ssh_key => ssh_key)
67
+ def update_ssh_key(ssh_key)
68
+ put("/ssh_key", :ssh_key => ssh_key)
69
69
  end
70
70
 
71
71
  def apps
@@ -1,5 +1,3 @@
1
- require "yaml"
2
-
3
1
  module Shelly
4
2
  class Cloudfile < Model
5
3
  attr_accessor :content
@@ -1,5 +1,5 @@
1
1
  <%= @code_name %>:
2
- ruby_version: 1.9.2 # 1.9.2 or ree
2
+ ruby: 1.9.2 # 1.9.2 or ree
3
3
  environment: production # RAILS_ENV
4
4
  monitoring_email:
5
5
  - <%= @email %>
data/lib/shelly/user.rb CHANGED
@@ -66,8 +66,8 @@ module Shelly
66
66
  end
67
67
 
68
68
  def upload_ssh_key
69
- key = File.read(ssh_key_path).strip
70
- shelly.add_ssh_key(key)
69
+ key = File.read(ssh_key_path)
70
+ shelly.update_ssh_key(key)
71
71
  end
72
72
 
73
73
  protected
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.0.21.pre5"
2
+ VERSION = "0.0.21"
3
3
  end
data/shelly.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.add_runtime_dependency "wijet-thor", "~> 0.14.7"
26
26
  s.add_runtime_dependency "rest-client"
27
27
  s.add_runtime_dependency "json"
28
- s.add_runtime_dependency "wijet-launchy"
28
+ s.add_runtime_dependency "launchy"
29
29
 
30
30
  s.files = `git ls-files`.split("\n")
31
31
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -11,6 +11,16 @@ describe Shelly::App do
11
11
  @app.code_name = "foo-staging"
12
12
  end
13
13
 
14
+ describe "being initialized" do
15
+ it "should have default ruby_version: MRI-1.9.2" do
16
+ @app.ruby_version.should == "MRI-1.9.2"
17
+ end
18
+
19
+ it "should have default environment: production" do
20
+ @app.environment.should == "production"
21
+ end
22
+ end
23
+
14
24
  describe ".guess_code_name" do
15
25
  it "should return name of current working directory" do
16
26
  Shelly::App.guess_code_name.should == "foo"
@@ -50,7 +60,7 @@ describe Shelly::App do
50
60
  FakeFS.deactivate!
51
61
  expected = <<-config
52
62
  foo-staging:
53
- ruby_version: 1.9.2 # 1.9.2 or ree
63
+ ruby: 1.9.2 # 1.9.2 or ree
54
64
  environment: production # RAILS_ENV
55
65
  monitoring_email:
56
66
  - bob@example.com
@@ -117,21 +127,21 @@ config
117
127
  attributes = {
118
128
  :code_name => "fooo",
119
129
  :name => "fooo",
120
- :domains => nil
130
+ :environment => "production",
131
+ :ruby_version => "MRI-1.9.2",
132
+ :domain_name => nil
121
133
  }
122
134
  @client.should_receive(:create_app).with(attributes).and_return("git_url" => "git@git.shellycloud.com:fooo.git",
123
- "domains" => %w(fooo.shellyapp.com))
135
+ "domain_name" => "fooo.shellyapp.com")
124
136
  @app.create
125
137
  end
126
138
 
127
- it "should assign returned git_url, domains, ruby_version and environment" do
139
+ it "should assign returned git_url and domain" do
128
140
  @client.stub(:create_app).and_return("git_url" => "git@git.example.com:fooo.git",
129
- "domains" => ["fooo.shellyapp.com"], "ruby_version" => "1.9.2", "environment" => "production")
141
+ "domain_name" => "fooo.shellyapp.com")
130
142
  @app.create
131
143
  @app.git_url.should == "git@git.example.com:fooo.git"
132
144
  @app.domains.should == ["fooo.shellyapp.com"]
133
- @app.ruby_version.should == "1.9.2"
134
- @app.environment.should == "production"
135
145
  end
136
146
  end
137
147
 
@@ -142,18 +152,20 @@ config
142
152
  attributes = {
143
153
  :code_name => "boo",
144
154
  :name => "boo",
145
- :domains => %w(boo.shellyapp.com boo.example.com)
155
+ :environment => "production",
156
+ :ruby_version => "MRI-1.9.2",
157
+ :domain_name => "boo.shellyapp.com boo.example.com"
146
158
  }
147
159
  @client.should_receive(:create_app).with(attributes).and_return("git_url" => "git@git.shellycloud.com:fooo.git",
148
- "domains" => %w(boo.shellyapp.com boo.example.com))
160
+ "domain_name" => "boo.shellyapp.com boo.example.com")
149
161
  @app.create
150
162
  end
151
163
 
152
164
  it "should assign returned git_url and domain" do
153
165
  @client.stub(:create_app).and_return("git_url" => "git@git.example.com:fooo.git",
154
- "domains" => %w(boo.shellyapp.com boo.example.com))
166
+ "domain_name" => "boo.shellyapp.com boo.example.com")
155
167
  @app.create
156
- @app.domains.should == %w(boo.shellyapp.com boo.example.com)
168
+ @app.domains.should == ["boo.shellyapp.com", "boo.example.com"]
157
169
  end
158
170
  end
159
171
  end
@@ -191,14 +191,6 @@ OUT
191
191
  end
192
192
  end
193
193
 
194
- it "should upload user's public SSH key and raise HTTP status 409 Conflict when SSH key exists in database" do
195
- @user.should_receive(:upload_ssh_key).and_raise(RestClient::Conflict)
196
- $stdout.should_receive(:puts).with("\e[32mYou have following clouds available:\e[0m")
197
- fake_stdin(["megan@example.com", "secret"]) do
198
- @main.login
199
- end
200
- end
201
-
202
194
  it "should display list of applications to which user has access" do
203
195
  $stdout.should_receive(:puts).with("\e[32mYou have following clouds available:\e[0m")
204
196
  $stdout.should_receive(:puts).with(" abc")
@@ -125,10 +125,10 @@ describe Shelly::Client do
125
125
  end
126
126
  end
127
127
 
128
- describe "#add_ssh_key" do
128
+ describe "#update_ssh_key" do
129
129
  it "should send put with give SSH key" do
130
- @client.should_receive(:post).with("/ssh_key", {:ssh_key => "abc"})
131
- @client.add_ssh_key("abc")
130
+ @client.should_receive(:put).with("/ssh_key", {:ssh_key => "abc"})
131
+ @client.update_ssh_key("abc")
132
132
  end
133
133
  end
134
134
 
@@ -122,7 +122,7 @@ describe Shelly::User do
122
122
 
123
123
  describe "#upload_ssh_key" do
124
124
  it "should read and upload user's public SSH key" do
125
- @client.should_receive(:add_ssh_key).with("ssh-key AAbbcc")
125
+ @client.should_receive(:update_ssh_key).with("ssh-key AAbbcc")
126
126
  @user.upload_ssh_key
127
127
  end
128
128
  end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21.pre5
5
- prerelease: 7
4
+ version: 0.0.21
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Shelly Cloud team
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-25 00:00:00.000000000Z
12
+ date: 2011-11-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2161001720 !ruby/object:Gem::Requirement
16
+ requirement: &2156379540 !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: *2161001720
24
+ version_requirements: *2156379540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &2161001240 !ruby/object:Gem::Requirement
27
+ requirement: &2156379120 !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: *2161001240
35
+ version_requirements: *2156379120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard
38
- requirement: &2161000780 !ruby/object:Gem::Requirement
38
+ requirement: &2156372480 !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: *2161000780
46
+ version_requirements: *2156372480
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: guard-rspec
49
- requirement: &2161000260 !ruby/object:Gem::Requirement
49
+ requirement: &2156371780 !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: *2161000260
57
+ version_requirements: *2156371780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: growl_notify
60
- requirement: &2160999740 !ruby/object:Gem::Requirement
60
+ requirement: &2156371240 !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: *2160999740
68
+ version_requirements: *2156371240
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rb-fsevent
71
- requirement: &2160999320 !ruby/object:Gem::Requirement
71
+ requirement: &2156370820 !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: *2160999320
79
+ version_requirements: *2156370820
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fakefs
82
- requirement: &2160998820 !ruby/object:Gem::Requirement
82
+ requirement: &2156370400 !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: *2160998820
90
+ version_requirements: *2156370400
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: fakeweb
93
- requirement: &2160998100 !ruby/object:Gem::Requirement
93
+ requirement: &2156369960 !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: *2160998100
101
+ version_requirements: *2156369960
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: wijet-thor
104
- requirement: &2160997460 !ruby/object:Gem::Requirement
104
+ requirement: &2156369460 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.14.7
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *2160997460
112
+ version_requirements: *2156369460
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rest-client
115
- requirement: &2160997040 !ruby/object:Gem::Requirement
115
+ requirement: &2156369040 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *2160997040
123
+ version_requirements: *2156369040
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: json
126
- requirement: &2160996580 !ruby/object:Gem::Requirement
126
+ requirement: &2156368580 !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: *2160996580
134
+ version_requirements: *2156368580
135
135
  - !ruby/object:Gem::Dependency
136
- name: wijet-launchy
137
- requirement: &2160996140 !ruby/object:Gem::Requirement
136
+ name: launchy
137
+ requirement: &2156368160 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,7 +142,7 @@ dependencies:
142
142
  version: '0'
143
143
  type: :runtime
144
144
  prerelease: false
145
- version_requirements: *2160996140
145
+ version_requirements: *2156368160
146
146
  description: Tool for managing applications and clouds at shellycloud.com
147
147
  email:
148
148
  - support@shellycloud.com
@@ -203,9 +203,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
203
  required_rubygems_version: !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
- - - ! '>'
206
+ - - ! '>='
207
207
  - !ruby/object:Gem::Version
208
- version: 1.3.1
208
+ version: '0'
209
209
  requirements: []
210
210
  rubyforge_project: shelly
211
211
  rubygems_version: 1.8.10