youthtree-capistrano 0.2.0 → 0.2.1

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.
data/Rakefile CHANGED
@@ -17,6 +17,7 @@ begin
17
17
  gem.add_dependency "rvm", "~> 1.0"
18
18
  gem.add_dependency "bundler", "~> 1.0"
19
19
  gem.add_dependency "capistrano"
20
+ gem.add_dependency "ydd"
20
21
  end
21
22
  Jeweler::GemcutterTasks.new
22
23
  rescue LoadError
@@ -1,6 +1,6 @@
1
1
  module YouthTree
2
2
  module Capistrano
3
- VERSION = "0.2.0".freeze
3
+ VERSION = "0.2.1".freeze
4
4
 
5
5
  def self.load(&blk)
6
6
  ::Capistrano::Configuration.instance(:must_exist).load(&blk)
@@ -21,6 +21,11 @@ YouthTree::Capistrano.load do
21
21
  run "rm -rf '#{to}' && ln -s '#{from}' '#{to}'"
22
22
  end
23
23
 
24
+ def lrun(command)
25
+ puts ">> #{command} # Run locally"
26
+ system command
27
+ end
28
+
24
29
  %w(staging production).each do |env_name|
25
30
  task env_name.to_sym do
26
31
  puts "** Switching stage to #{env_name} **"
@@ -1,48 +1,25 @@
1
1
  require 'ostruct'
2
2
  YouthTree::Capistrano.load_named(:syncing) do
3
3
 
4
- yt_cset(:syncing_version_name) { "#{application}-#{stage}-#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}" }
5
- yt_cset(:syncing_remote_dir) { "#{shared_path}/sync" }
6
- yt_cset(:syncing_remote_archive) { "#{syncing_remote_dir}/#{syncing_version_name}.sql.bz2" }
7
- yt_cset(:syncing_local_archive) { "/tmp/#{syncing_version_name}.sql.bz2" }
4
+ yt_cset(:syncing_version_name) { "#{application}-#{stage}-#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}" }
5
+ yt_cset(:syncing_remote_dir) { "#{shared_path}/sync" }
6
+ yt_cset(:syncing_current_remote_dir) { "#{syncing_remote_dir}/#{syncing_version_name}" }
7
+ yt_cset(:syncing_current_local_dir) { "/tmp/#{syncing_version_name}" }
8
+ yt_cset(:syncing_local_archive) { "#{syncing_current_local_dir}.tar.gz"}
9
+ yt_cset(:syncing_remote_archive) { "#{syncing_current_remote_dir}.tar.gz"}
8
10
 
9
11
  yt_cset :syncing_remote_blacklist, ["production"]
10
12
 
11
13
  namespace :sync do
12
14
 
13
- def config_from(text, env = ENV['RAILS_ENV'])
14
- full_config = YAML.load(text) || {}
15
- config = full_config[env || "development"] || {}
16
- OpenStruct.new(config)
17
- end
18
-
19
- def remote_db_config
20
- config_from capture("cat '#{shared_path}/#{database_shared_config}'"), rails_env
21
- end
22
-
23
- def local_db_config
24
- config_from File.read("config/database.yml")
25
- end
26
-
27
- def options_for_config(config)
28
- host_command = config.host.nil? ? '' : "-h #{config.host}"
29
- "-u #{config.username} --password='#{config.password}' #{host_command} #{config.database}"
30
- end
31
-
32
- def dump_command_for(config)
33
- "mysqldump #{options_for_config(config)}"
34
- end
35
-
36
- def load_command_for(config)
37
- "mysql #{options_for_config(config)}"
38
- end
39
-
40
15
  task :cleanup_remote do
16
+ run "rm -rf #{syncing_current_remote_dir}"
41
17
  run "rm -rf #{syncing_remote_archive}"
42
18
  end
43
19
 
44
20
  task :cleanup_local do
45
- run "rm -rf #{syncing_local_archive}"
21
+ lrun "rm -rf #{syncing_current_local_dir}"
22
+ lrun "rm -rf #{syncing_local_archive}"
46
23
  end
47
24
 
48
25
  task :prepare do
@@ -50,23 +27,31 @@ YouthTree::Capistrano.load_named(:syncing) do
50
27
  end
51
28
 
52
29
  desc "Dumps the remote db to a file"
53
- task :save_remote_db do
54
- run "#{dump_command_for(remote_db_config)} | bzip2 -9 > #{syncing_remote_archive}"
30
+ task :dump_remote_db do
31
+ run "rm -rf '#{syncing_current_remote_dir}' '#{syncing_remote_archive}'"
32
+ bundle_exec "ydd dump '#{syncing_current_remote_dir}' '#{latest_release}' --env='#{rails_env}'"
33
+ run "cd '#{syncing_current_remote_dir}' && tar czf '#{syncing_remote_archive}' ."
55
34
  end
56
35
 
57
36
  desc "Loads data into the remote db from the given file"
58
37
  task :load_remote_db do
59
- run "bzip2 -c -d #{syncing_remote_archive} | #{load_command_for(remote_db_config)} && rm -rf #{syncing_remote_archive}"
38
+ run "mkdir -p '#{syncing_current_remote_dir}'"
39
+ run "cd '#{syncing_current_remote_dir}' && tar xzf '#{syncing_remote_archive}' ."
40
+ bundle_exec "ydd load '#{syncing_current_remote_dir}' '#{latest_release}' --env='#{rails_env}'"
60
41
  end
61
42
 
62
43
  desc "Dumps the local db to a file"
63
- task :save_local_db do
64
- system "#{dump_command_for(local_db_config)} | bzip2 -9 > #{syncing_local_archive}"
44
+ task :dump_local_db do
45
+ lrun "rm -rf '#{syncing_current_local_dir}' '#{syncing_local_archive}'"
46
+ lrun "ydd dump '#{syncing_current_local_dir}' '#{Dir.pwd}'"
47
+ lrun "cd '#{syncing_current_local_dir}' && tar czf '#{syncing_local_archive}' ."
65
48
  end
66
49
 
67
50
  desc "Loads data into the local db from the given file"
68
51
  task :load_local_db do
69
- system "bzip2 -c -d #{syncing_local_archive} | #{load_command_for(local_db_config)} && rm -rf #{syncing_local_archive}"
52
+ lrun "mkdir -p '#{syncing_current_local_dir}'"
53
+ lrun "cd '#{syncing_current_local_dir}' && tar xzf '#{syncing_local_archive}' ."
54
+ lrun "ydd load '#{syncing_current_local_dir}' '#{Dir.pwd}'"
70
55
  end
71
56
 
72
57
  task :download_remote_db do
@@ -80,7 +65,7 @@ YouthTree::Capistrano.load_named(:syncing) do
80
65
  desc "Downloads the database into the current environment from the remote server"
81
66
  task :down do
82
67
  prepare
83
- save_remote_db
68
+ dump_remote_db
84
69
  download_remote_db
85
70
  cleanup_remote
86
71
  load_local_db
@@ -93,7 +78,7 @@ YouthTree::Capistrano.load_named(:syncing) do
93
78
  exit 1
94
79
  end
95
80
  prepare
96
- save_local_db
81
+ dump_local_db
97
82
  upload_local_db
98
83
  cleanup_local
99
84
  load_remote_db
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{youthtree-capistrano}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Darcy Laycock"]
12
- s.date = %q{2010-09-02}
12
+ s.date = %q{2010-09-18}
13
13
  s.description = %q{Capistrano tasks used for common Youth Tree deployments.}
14
14
  s.email = %q{sutto@sutto.net}
15
15
  s.extra_rdoc_files = [
@@ -49,15 +49,18 @@ Gem::Specification.new do |s|
49
49
  s.add_runtime_dependency(%q<rvm>, ["~> 1.0"])
50
50
  s.add_runtime_dependency(%q<bundler>, ["~> 1.0"])
51
51
  s.add_runtime_dependency(%q<capistrano>, [">= 0"])
52
+ s.add_runtime_dependency(%q<ydd>, [">= 0"])
52
53
  else
53
54
  s.add_dependency(%q<rvm>, ["~> 1.0"])
54
55
  s.add_dependency(%q<bundler>, ["~> 1.0"])
55
56
  s.add_dependency(%q<capistrano>, [">= 0"])
57
+ s.add_dependency(%q<ydd>, [">= 0"])
56
58
  end
57
59
  else
58
60
  s.add_dependency(%q<rvm>, ["~> 1.0"])
59
61
  s.add_dependency(%q<bundler>, ["~> 1.0"])
60
62
  s.add_dependency(%q<capistrano>, [">= 0"])
63
+ s.add_dependency(%q<ydd>, [">= 0"])
61
64
  end
62
65
  end
63
66
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: youthtree-capistrano
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Darcy Laycock
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-02 00:00:00 +08:00
18
+ date: 2010-09-18 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -62,6 +62,20 @@ dependencies:
62
62
  version: "0"
63
63
  type: :runtime
64
64
  version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: ydd
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :runtime
78
+ version_requirements: *id004
65
79
  description: Capistrano tasks used for common Youth Tree deployments.
66
80
  email: sutto@sutto.net
67
81
  executables: []