capistrano-toolbox 0.0.9 → 0.0.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8aedc2dac879ff0ce1105c398f6d49e2cd293ca
4
- data.tar.gz: 5cca6709b92d33f36553dd2b79dbb7927f1244ca
3
+ metadata.gz: 24946192ec201ff25510b07b39f5787b9bb96205
4
+ data.tar.gz: 81d97deeb0549e641ce8873d997fc60b709ecba6
5
5
  SHA512:
6
- metadata.gz: 4af725d02037cbfaaf18687ed831d197b1a5406bc9f0a716661807c784a0e7f7fe1739f91d052c87e704bc375dde8118f9e1e623289aeff88255ee60f8b36e00
7
- data.tar.gz: aec3423878638b1742fd8d2fbba25da169e3c9644089b62c57fb6b91955b31fd67b0c4000363bb536ca27d3a4ce7d223b9ca6694734a281abedfadffe7fd0603
6
+ metadata.gz: 869f8a6603a1108e530c854a7c9600635cc0c2caa3563fa44dc5f98f1546ec24e67076a8a668026eabb7f0cf5f66ce17ffaf02566dc2b16c6c5182c01916df34
7
+ data.tar.gz: 38c10ecd1430ba3a2420d0c76442ae26eb8f0ce43f31ce030b2fcc428a6500b2c1e3bb0692413114330af5607fc202ebc28548f281963419a54a2d9d2c0a215d
@@ -1,34 +1,38 @@
1
1
  require 'securerandom'
2
2
 
3
3
  Capistrano::Configuration.instance(:must_exist).load do
4
- def put_as_root (user, contents, target, sudo=false)
4
+ def put_nginx_config (user, contents, target, sudo=false)
5
5
  tempfile = Tempfile.new(File.basename(target))
6
6
  tempfile.write(contents)
7
7
  tempfile.close
8
- suscp(user, tempfile.path, target, sudo)
9
- surun(user, "chmod 644 #{target}", sudo)
10
- surun(user, "chown root:root #{target}", sudo)
8
+
9
+ remote_tempfile ="#{release_path}/tmp/new-nginx-config"
10
+ restart_nginx_file = "#{release_path}/tmp/nginx_restart.txt"
11
+
12
+ suscp(user, tempfile.path, remote_tempfile, sudo)
13
+ surun(user, "diff -q #{remote_tempfile} #{target} && rm #{remote_tempfile} || (mv #{remote_tempfile} #{target} && touch #{restart_nginx_file})", sudo)
14
+ surun(user, "chmod 644 #{target} && chown root:root #{target}", sudo)
11
15
  tempfile.unlink
12
16
  end
13
17
 
14
18
  def suscp (user, from, to, sudo=false)
15
19
  servers = find_servers_for_task(current_task)
16
20
  servers.each do |server|
17
- tempfile = "~/suscp-upload-#{SecureRandom.hex(6)}"
18
- command = "scp #{from} #{user}@#{server}:#{tempfile}"
21
+ command = "scp #{from} #{user}@#{server}:#{to}"
19
22
  puts " * \033[1;33mexecuting \"#{command}\"\033[0m"
20
23
  raise unless system command
21
- surun(user, "mv #{tempfile} #{to}", sudo)
22
24
  end
23
25
  end
24
26
 
27
+
25
28
  def surun (user, command, sudo=false)
26
29
  puts " * \033[1;33mexecuting sudo \"#{command}\"\033[0m"
27
30
  servers = find_servers_for_task(current_task)
28
31
  puts " servers: #{servers.inspect}"
29
32
  servers.each do |server|
30
33
  puts " [#{server}] executing command"
31
- raise unless system %!ssh #{server} -l #{user} "#{"sudo" if sudo} #{command.gsub('"','\\"')}"!
34
+ maybe_sudo = sudo ? "sudo -s /bin/bash -c #{command.inspect}" : command
35
+ raise unless system %!ssh #{server} -l #{user} #{maybe_sudo.inspect}!
32
36
  end
33
37
  end
34
38
 
@@ -13,16 +13,19 @@ Capistrano::Configuration.instance(:must_exist).load do
13
13
  config = fetch(:nginx_config, nil)
14
14
  if config
15
15
  available_path = File.join(config_dir, "#{application}.conf")
16
- put_as_root(nginx_user, config, available_path, nginx_use_sudo)
16
+ put_nginx_config(nginx_user, config, available_path, nginx_use_sudo)
17
17
  surun(nginx_user, "nxensite #{application}.conf", nginx_use_sudo)
18
18
  end
19
19
 
20
20
  ssl_config = fetch(:nginx_ssl_config, nil)
21
21
  if ssl_config
22
22
  available_ssl_path = File.join(config_dir, "#{application}-ssl.conf")
23
- put_as_root(nginx_user, ssl_config, available_ssl_path, nginx_use_sudo)
23
+ put_nginx_config(nginx_user, ssl_config, available_ssl_path, nginx_use_sudo)
24
24
  surun(nginx_user, "nxensite #{application}-ssl.conf", nginx_use_sudo)
25
25
  end
26
+
27
+ restart_nginx = "#{release_path}/tmp/nginx_restart.txt"
28
+ surun(nginx_user, "! test -f #{restart_nginx} || service nginx reload", nginx_use_sudo)
26
29
  end
27
30
 
28
31
  desc "Reload nginx config"
@@ -32,8 +35,15 @@ Capistrano::Configuration.instance(:must_exist).load do
32
35
 
33
36
  surun(nginx_user, "service nginx reload", nginx_use_sudo)
34
37
  end
38
+
39
+ desc "Restart nginx"
40
+ task :restart, :roles => :app, :except => { :no_release => true } do
41
+ nginx_user = fetch(:nginx_user, "root")
42
+ nginx_use_sudo = fetch(:nginx_use_sudo, false)
43
+
44
+ surun(nginx_user, "service nginx restart", nginx_use_sudo)
45
+ end
46
+
35
47
  end
36
48
  end
37
-
38
- after "deploy:nginx:update_config", "deploy:nginx:reload"
39
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Louis Giordano
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-09-25 00:00:00.000000000 Z
13
+ date: 2013-09-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capistrano