capistrano-mon 0.0.3 → 0.0.4

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.
@@ -18,4 +18,6 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_dependency("capistrano")
21
+ gem.add_dependency("capistrano-file-resources", "~> 0.0.1")
22
+ gem.add_dependency("capistrano-file-transfer-ext", "~> 0.0.3")
21
23
  end
@@ -1,6 +1,7 @@
1
1
  require "capistrano-mon/version"
2
+ require "capistrano/configuration/actions/file_transfer_ext"
3
+ require "capistrano/configuration/resources/file_resources"
2
4
  require "erb"
3
- require "tempfile"
4
5
  require "uri"
5
6
 
6
7
  module Capistrano
@@ -65,7 +66,7 @@ module Capistrano
65
66
  # Do not run automatically during normal `deploy' to avoid slow down.
66
67
  # If you want to do so, add following line in your ./config/deploy.rb
67
68
  #
68
- # after 'deploy:update', 'mon:update'
69
+ # after 'deploy:finalize_update', 'mon:update'
69
70
 
70
71
  task(:_update, :roles => :app, :except => { :no_release => true }) {
71
72
  configure
@@ -112,13 +113,6 @@ module Capistrano
112
113
  update_plugins
113
114
  }
114
115
 
115
- def tempfile(name)
116
- f = Tempfile.new(name)
117
- path = f.path
118
- f.close(true) # close and remove tempfile immediately
119
- path
120
- end
121
-
122
116
  _cset(:mon_plugins_path, "/usr/local/lib/mon")
123
117
  _cset(:mon_plugins, [])
124
118
  #
@@ -137,7 +131,7 @@ module Capistrano
137
131
  #
138
132
  task(:update_plugins, :roles => :app, :except => { :no_release => true }) {
139
133
  srcs = mon_plugins.map { |uri, name| uri }
140
- tmps = mon_plugins.map { |uri, name| tempfile('capistrano-mon') }
134
+ tmps = mon_plugins.map { |uri, name| capture("t=$(mktemp /tmp/capistrano-mon.XXXXXXXXXX);rm -f $t;echo $t").chomp }
141
135
  dsts = mon_plugins.map { |uri, name|
142
136
  basename = File.basename(name || URI.parse(uri).path)
143
137
  case basename
@@ -168,35 +162,12 @@ module Capistrano
168
162
  # TODO: setup (sysvinit|daemontools|upstart|runit|systemd) service of mon
169
163
  }
170
164
 
171
- def template(file)
172
- if File.file?(file)
173
- File.read(file)
174
- elsif File.file?("#{file}.erb")
175
- ERB.new(File.read("#{file}.erb")).result(binding)
176
- else
177
- abort("No such template: #{file} or #{file}.erb")
178
- end
179
- end
180
-
181
165
  _cset(:mon_template_path, File.join(File.dirname(__FILE__), 'capistrano-mon', 'templates'))
182
166
  _cset(:mon_configure_files, %w(/etc/default/mon mon.cf))
183
167
  task(:configure, :roles => :app, :except => { :no_release => true }) {
184
- srcs = mon_configure_files.map { |file| File.join(mon_template_path, file) }
185
- tmps = mon_configure_files.map { |file| tempfile('capistrano-mon') }
186
- dsts = mon_configure_files.map { |file| File.expand_path(file) == file ? file : File.join(mon_path, file) }
187
- begin
188
- srcs.zip(tmps) do |src, tmp|
189
- put(template(src), tmp)
190
- end
191
- execute = []
192
- dirs = dsts.map { |path| File.dirname(path) }.uniq
193
- execute << "#{sudo} mkdir -p #{dirs.map { |dir| dir.dump }.join(' ')}" unless dirs.empty?
194
- tmps.zip(dsts) do |tmp, dst|
195
- execute << "( diff -u #{dst.dump} #{tmp.dump} || #{sudo} mv -f #{tmp.dump} #{dst.dump} )"
196
- end
197
- run(execute.join(' && ')) unless execute.empty?
198
- ensure
199
- run("rm -f #{tmps.map { |t| t.dump }.join(' ')}") unless tmps.empty?
168
+ mon_configure_files.each do |f|
169
+ safe_put(template(f, :path => mon_template_path), (File.expand_path(f) == f ? f : File.join(mon_path, f)),
170
+ :sudo => true, :place => :if_modified)
200
171
  end
201
172
  }
202
173
 
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Mon
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-mon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-13 00:00:00.000000000 Z
12
+ date: 2013-02-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
@@ -27,6 +27,38 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: capistrano-file-resources
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.0.1
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.0.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: capistrano-file-transfer-ext
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.0.3
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.3
30
62
  description: a capistrano recipe to setup Mon.
31
63
  email:
32
64
  - yamashita@geishatokyo.com