railshoster 0.6.9 → 0.6.10

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.textile CHANGED
@@ -94,3 +94,7 @@ h3. 0.6.9
94
94
 
95
95
  * Support GLI 1.x.x and 2.x.x
96
96
 
97
+ h3. 0.6.10
98
+
99
+ * Ask for ssh password if the init-hash doesn't work
100
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- railshoster (0.6.9)
4
+ railshoster (0.6.10)
5
5
  bundler (>= 1.0.15)
6
6
  capistrano
7
7
  capistrano-ext
@@ -70,19 +70,22 @@ module Railshoster
70
70
  git_url = get_git_remote_url_from_git_config
71
71
  @app_hash["git"] = git_url
72
72
 
73
- #TODO Add connection test -> If there's already access -> no need to do this
74
- selected_key = Railshoster::Utilities.select_public_ssh_key
75
- @app_hash["public_ssh_key"] = Pathname.new(selected_key[:path]).basename.to_s.gsub(".pub", "")
76
-
77
- create_remote_authorized_key_file_from_app_hash(@app_hash, selected_key)
73
+ sftp_session = try_to_get_a_sftp_session_without_password(@app_hash["h"].first, @app_hash["u"])
78
74
 
75
+ if sftp_session == nil
76
+ selected_key = Railshoster::Utilities.select_public_ssh_key
77
+ @app_hash["public_ssh_key"] = Pathname.new(selected_key[:path]).basename.to_s.gsub(".pub", "")
78
+ create_remote_authorized_key_file_from_app_hash(@app_hash, selected_key)
79
+ end
80
+
79
81
  @app_hash["remote_db_yml"] = "#{@app_hash["deploy_to"]}/shared/config/database.yml"
80
82
 
81
83
  @app_hash["h"].each do |host|
82
- update_database_yml_db_adapters_via_ssh(host)
84
+ update_database_yml_db_adapters_via_ssh(host, sftp_session)
83
85
  end
84
86
 
85
- deployrb_str = create_deployrb(@app_hash)
87
+
88
+ deployrb_str = create_deployrb(@app_hash)
86
89
  write_deploy_rb(deployrb_str)
87
90
  capify_project
88
91
  success_message
@@ -10,16 +10,19 @@ module Railshoster
10
10
  protected
11
11
 
12
12
  # Receive and update a database.yml via SFTP.
13
- def update_database_yml_db_adapters_via_ssh(host, ssh_username = @app_hash["u"], path_to_dbyml = @app_hash["remote_db_yml"])
13
+ def update_database_yml_db_adapters_via_ssh(host, sftp_session=nil, ssh_username = @app_hash["u"], path_to_dbyml = @app_hash["remote_db_yml"])
14
14
  dbyml = ""
15
- Net::SFTP.start(host, ssh_username) do |sftp|
16
- sftp.file.open(path_to_dbyml) do |file|
17
- dbyml = file.read
18
- end
19
- sftp.file.open(path_to_dbyml, "w+") do |file|
20
- file.write(update_database_yml_db_adapters_in_yml(dbyml))
21
- end
15
+
16
+ sftp_session ||= Net::SFTP.start(host, ssh_username)
17
+
18
+ sftp_session.file.open(path_to_dbyml) do |file|
19
+ dbyml = file.read
20
+ end
21
+
22
+ sftp_session.file.open(path_to_dbyml, "w+") do |file|
23
+ file.write(update_database_yml_db_adapters_in_yml(dbyml))
22
24
  end
25
+
23
26
  end
24
27
 
25
28
  def get_path_to_dbyml
@@ -1,4 +1,5 @@
1
1
  require 'net/sftp'
2
+ require 'highline/import'
2
3
 
3
4
  module Railshoster
4
5
  module InitSshHelpers
@@ -40,21 +41,41 @@ module Railshoster
40
41
  def create_remote_authorized_key_file(host, ssh_username, password, key, remote_dot_ssh_path = ".ssh", target_username = nil)
41
42
 
42
43
  remote_authorized_keys_path = remote_dot_ssh_path + "/authorized_keys"
43
- Net::SFTP.start(host, ssh_username, :password => password) do |sftp|
44
-
45
- #TODO Smarter way to determine home directory
46
- stats = sftp.stat!("/home/#{target_username}") if target_username
47
-
48
- begin
49
- sftp.mkdir!(remote_dot_ssh_path)
50
- sftp.setstat(remote_dot_ssh_path, :uid => stats.uid, :gid => stats.gid) if target_username
51
- rescue Net::SFTP::StatusException => e
52
- # Most likely the .ssh folder already exists raise again if not.
53
- raise e unless e.code == 4
54
- end
55
- sftp.upload!(key[:path].to_s, remote_authorized_keys_path)
56
- sftp.setstat(remote_authorized_keys_path, :uid => stats.uid, :gid => stats.gid) if target_username
57
- end
44
+
45
+ begin
46
+
47
+ Net::SFTP.start(host, ssh_username, :password => password) do |sftp|
48
+ #TODO Smarter way to determine home directory
49
+ stats = sftp.stat!("/home/#{target_username}") if target_username
50
+
51
+ begin
52
+ sftp.mkdir!(remote_dot_ssh_path)
53
+ sftp.setstat(remote_dot_ssh_path, :uid => stats.uid, :gid => stats.gid) if target_username
54
+ rescue Net::SFTP::StatusException => e
55
+ # Most likely the .ssh folder already exists raise again if not.
56
+ raise e unless e.code == 4
57
+ end
58
+ sftp.upload!(key[:path].to_s, remote_authorized_keys_path)
59
+ sftp.setstat(remote_authorized_keys_path, :uid => stats.uid, :gid => stats.gid) if target_username
60
+ end
61
+ rescue Net::SSH::AuthenticationFailed => e
62
+ create_remote_authorized_key_file(host, ssh_username, ask_for_ssh_password(ssh_username), key, remote_dot_ssh_path, target_username)
63
+ end
64
+
65
+ end
66
+
67
+ def try_to_get_a_sftp_session_without_password(host, user)
68
+
69
+ begin
70
+ return Net::SFTP.start(host, user)
71
+ rescue Net::SSH::AuthenticationFailed => e
72
+ return nil
73
+ end
74
+
75
+ end
76
+
77
+ def ask_for_ssh_password(user)
78
+ ask("Enter ssh password for user #{user}: ") { |q| q.echo = false }
58
79
  end
59
80
  end
60
81
  end
@@ -1,3 +1,3 @@
1
1
  module Railshoster
2
- VERSION = "0.6.9"
2
+ VERSION = "0.6.10"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railshoster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.9
4
+ version: 0.6.10
5
5
  prerelease:
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-08-29 00:00:00.000000000 Z
12
+ date: 2012-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &13150620 !ruby/object:Gem::Requirement
16
+ requirement: &10310200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.15
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *13150620
24
+ version_requirements: *10310200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capistrano
27
- requirement: &13150100 !ruby/object:Gem::Requirement
27
+ requirement: &10325700 !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: :runtime
34
34
  prerelease: false
35
- version_requirements: *13150100
35
+ version_requirements: *10325700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: capistrano-ext
38
- requirement: &13149380 !ruby/object:Gem::Requirement
38
+ requirement: &10324600 !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: :runtime
45
45
  prerelease: false
46
- version_requirements: *13149380
46
+ version_requirements: *10324600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: gli
49
- requirement: &13148580 !ruby/object:Gem::Requirement
49
+ requirement: &10323840 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.2.5
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *13148580
57
+ version_requirements: *10323840
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: json
60
- requirement: &13163980 !ruby/object:Gem::Requirement
60
+ requirement: &10323300 !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: :runtime
67
67
  prerelease: false
68
- version_requirements: *13163980
68
+ version_requirements: *10323300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: git
71
- requirement: &13163100 !ruby/object:Gem::Requirement
71
+ requirement: &10322500 !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: :runtime
78
78
  prerelease: false
79
- version_requirements: *13163100
79
+ version_requirements: *10322500
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: erubis
82
- requirement: &13162440 !ruby/object:Gem::Requirement
82
+ requirement: &10321880 !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: :runtime
89
89
  prerelease: false
90
- version_requirements: *13162440
90
+ version_requirements: *10321880
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: sane
93
- requirement: &13161880 !ruby/object:Gem::Requirement
93
+ requirement: &10321300 !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: :runtime
100
100
  prerelease: false
101
- version_requirements: *13161880
101
+ version_requirements: *10321300
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rspec
104
- requirement: &13161200 !ruby/object:Gem::Requirement
104
+ requirement: &10320740 !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: *13161200
112
+ version_requirements: *10320740
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: fakefs
115
- requirement: &13160520 !ruby/object:Gem::Requirement
115
+ requirement: &10320160 !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: :development
122
122
  prerelease: false
123
- version_requirements: *13160520
123
+ version_requirements: *10320160
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: mocha
126
- requirement: &13160020 !ruby/object:Gem::Requirement
126
+ requirement: &10319420 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *13160020
134
+ version_requirements: *10319420
135
135
  description: Easily deploy your Rails app to RailsHoster.com by using this gem.
136
136
  email:
137
137
  - fischer@enterprise-rails.de
@@ -205,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
205
  version: '0'
206
206
  segments:
207
207
  - 0
208
- hash: -4337555120511314870
208
+ hash: 196242856175491776
209
209
  required_rubygems_version: !ruby/object:Gem::Requirement
210
210
  none: false
211
211
  requirements:
@@ -214,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
214
  version: '0'
215
215
  segments:
216
216
  - 0
217
- hash: -4337555120511314870
217
+ hash: 196242856175491776
218
218
  requirements: []
219
219
  rubyforge_project: railshoster
220
220
  rubygems_version: 1.8.10