capistrano-mon 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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