kali-chef-deploy 0.2.2.1 → 0.2.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'date'
5
5
  require 'spec/rake/spectask'
6
6
 
7
7
  GEM = "chef-deploy"
8
- GEM_VERSION = "0.2.2.1"
8
+ GEM_VERSION = "0.2.5.2"
9
9
  AUTHOR = "Ezra Zygmuntowicz"
10
10
  EMAIL = "Your Email"
11
11
  HOMEPAGE = "http://example.com"
@@ -12,14 +12,7 @@ class CachedDeploy
12
12
  @configuration[:revision] = source.query_revision(@configuration[:branch]) {|cmd| run_with_result "#{cmd}"}
13
13
  end
14
14
 
15
- if check_current_revision_and_noop_if_same(@configuration[:revision])
16
- Chef::Log.info "Revision is already deployed, running migrations if there are any"
17
- callback(:before_migrate)
18
- migrate
19
- callback(:before_symlink)
20
- symlink
21
- return
22
- end
15
+ return if check_current_revision_and_noop_if_same_and_deployed(@configuration[:revision])
23
16
 
24
17
  Chef::Log.info "ensuring proper ownership"
25
18
  chef_run(fix_ownership_command(user, group, @configuration[:deploy_to]))
@@ -30,6 +23,7 @@ class CachedDeploy
30
23
  Chef::Log.info "copying the cached version to #{release_path}"
31
24
  chef_run(copy_repository_cache)
32
25
  install_gems
26
+ prepare_directories
33
27
 
34
28
  chef_run(fix_ownership_command(user, group, @configuration[:deploy_to]))
35
29
 
@@ -41,17 +35,22 @@ class CachedDeploy
41
35
  restart
42
36
  callback(:after_restart)
43
37
  cleanup
38
+
39
+ mark_deployed
40
+ @configuration[:new_resource].updated = true
44
41
  end
45
42
 
46
43
  def restart
47
44
  unless @configuration[:restart_command].empty?
48
45
  Chef::Log.info "restarting app: #{latest_release}"
49
- chef_run("cd #{current_path} && sudo -u #{user} RAILS_ENV=#{@configuration[:environment]} RACK_ENV=#{@configuration[:environment]} MERB_ENV=#{@configuration[:environment]} #{@configuration[:restart_command]}")
46
+ chef_run("cd #{current_path} && sudo -u #{user} INLINEDIR=/tmp RAILS_ENV=#{@configuration[:environment]} RACK_ENV=#{@configuration[:environment]} MERB_ENV=#{@configuration[:environment]} #{@configuration[:restart_command]}")
50
47
  end
51
48
  end
52
49
 
53
- def check_current_revision_and_noop_if_same(newrev)
54
- IO.read("#{latest_release}/REVISION").chomp == newrev
50
+ def check_current_revision_and_noop_if_same_and_deployed(newrev)
51
+ IO.read("#{latest_release}/REVISION").chomp == newrev &&
52
+ IO.read("#{shared_path}/DEPLOYED_REVISION").chomp == newrev
53
+
55
54
  rescue
56
55
  false
57
56
  end
@@ -96,6 +95,8 @@ class CachedDeploy
96
95
  FileUtils.rm_rf latest_release
97
96
  Chef::Log.info "restarting with previous release"
98
97
  restart
98
+
99
+ @configuration[:new_resource].updated = true
99
100
  end
100
101
 
101
102
  def fix_ownership_command(user, group, path)
@@ -105,6 +106,7 @@ class CachedDeploy
105
106
  def migrate
106
107
  if @configuration[:migrate]
107
108
  chef_run "ln -nfs #{shared_path}/config/database.yml #{latest_release}/config/database.yml"
109
+ chef_run "ln -nfs #{shared_path}/log #{latest_release}/log"
108
110
  Chef::Log.info "Migrating: cd #{latest_release} && sudo -u #{user} RAILS_ENV=#{@configuration[:environment]} RACK_ENV=#{@configuration[:environment]} MERB_ENV=#{@configuration[:environment]} #{@configuration[:migration_command]}"
109
111
  chef_run(fix_ownership_command(user, group, latest_release))
110
112
  chef_run("cd #{latest_release} && sudo -u #{user} RAILS_ENV=#{@configuration[:environment]} RACK_ENV=#{@configuration[:environment]} MERB_ENV=#{@configuration[:environment]} #{@configuration[:migration_command]}")
@@ -218,7 +220,7 @@ class CachedDeploy
218
220
  next if has_gem?(g[:name], g[:version])
219
221
  r = Chef::Resource::GemPackage.new(g[:name], nil, @configuration[:node])
220
222
  r.version g[:version]
221
- r.source "http://gems.github.com"
223
+ r.source(g.has_key?(:source) ? g[:source] : "http://gems.github.com")
222
224
  resources << r
223
225
  end
224
226
  resources.each do |r|
@@ -231,6 +233,25 @@ class CachedDeploy
231
233
  end
232
234
  end
233
235
  end
236
+
237
+ def prepare_directories
238
+ resources = []
239
+ %w( log system pids config ).each do |shared_subdir|
240
+ r = Chef::Resource::Directory.new("#{shared_path}/#{shared_subdir}", nil, @configuration[:node])
241
+ r.owner user
242
+ r.group group
243
+ r.mode 0775
244
+ resources << r
245
+ end
246
+ resources.each do |r|
247
+ begin
248
+ r.run_action(:create)
249
+ rescue Chef::Exception::Exec => e
250
+ Chef::Log.info("Error creating directory #{r.path}")
251
+ raise e
252
+ end
253
+ end
254
+ end
234
255
 
235
256
  def has_gem?(name, version=nil)
236
257
  if !$GEM_LIST_DEPLOY
@@ -259,7 +280,8 @@ class CachedDeploy
259
280
  end
260
281
 
261
282
  def update_repository_cache
262
- command = "if [ -d #{repository_cache} ]; then " +
283
+ command = "if [ -d #{repository_cache} ] &&" +
284
+ "git --git-dir #{repository_cache}/.git/ remote -v | grep -q #{configuration[:repository]}; then " +
263
285
  "#{source.sync(revision, repository_cache)}; " +
264
286
  "else #{source.checkout(revision, repository_cache)}; fi"
265
287
  command
@@ -281,6 +303,10 @@ class CachedDeploy
281
303
  def mark
282
304
  "(echo #{revision} > #{release_path}/REVISION)"
283
305
  end
306
+
307
+ def mark_deployed
308
+ chef_run("echo #{revision} > #{shared_path}/DEPLOYED_REVISION")
309
+ end
284
310
 
285
311
  def copy_exclude
286
312
  @copy_exclude ||= Array(configuration.fetch(:copy_exclude, []))
@@ -32,6 +32,9 @@ class Git
32
32
  end
33
33
 
34
34
  execute = []
35
+
36
+ execute << "rm -rf #{destination}"
37
+
35
38
  if args.empty?
36
39
  execute << "#{git} clone #{verbose} #{configuration[:repository]} #{destination}"
37
40
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kali-chef-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2.1
4
+ version: 0.2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Zygmuntowicz
@@ -9,7 +9,7 @@ autorequire: chef-deploy
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-29 00:00:00 -07:00
12
+ date: 2009-07-29 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -28,14 +28,14 @@ files:
28
28
  - README.rdoc
29
29
  - Rakefile
30
30
  - TODO
31
- - lib/chef-deploy
32
31
  - lib/chef-deploy/cached_deploy.rb
33
32
  - lib/chef-deploy/git.rb
34
33
  - lib/chef-deploy/subversion.rb
35
34
  - lib/chef-deploy.rb
36
- has_rdoc: false
35
+ has_rdoc: true
37
36
  homepage: http://example.com
38
- licenses:
37
+ licenses: []
38
+
39
39
  post_install_message:
40
40
  rdoc_options: []
41
41
 
@@ -56,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
56
  requirements: []
57
57
 
58
58
  rubyforge_project:
59
- rubygems_version: 1.3.5
59
+ rubygems_version: 1.3.4
60
60
  signing_key:
61
61
  specification_version: 3
62
62
  summary: A gem that provides...