blavosync 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Blavosync.gemspec ADDED
@@ -0,0 +1,50 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{blavosync}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["jayronc"]
12
+ s.date = %q{2009-12-29}
13
+ s.description = %q{Sync a remote db and rsync content to your development environment. Useful for small teams and developers who are not able to do this manually.}
14
+ s.email = %q{jerrodblavos@mac.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ "Blavosync.gemspec",
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "init.rb",
26
+ "lib/blavosync.rb",
27
+ "pkg/blavosync-0.0.0.pre1.gem",
28
+ "pkg/blavosync-0.0.1.gem",
29
+ "recipes/content_rsync.rb",
30
+ "recipes/content_sync.rb",
31
+ "recipes/db_sync.rb",
32
+ "recipes/shared_sync.rb"
33
+ ]
34
+ s.homepage = %q{http://github.com/jerrod/Blavosync}
35
+ s.rdoc_options = ["--charset=UTF-8"]
36
+ s.require_paths = ["recipes"]
37
+ s.rubygems_version = %q{1.3.5}
38
+ s.summary = %q{Sync a remote db and rsync content to your development environment.}
39
+
40
+ if s.respond_to? :specification_version then
41
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
45
+ else
46
+ end
47
+ else
48
+ end
49
+ end
50
+
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 jayronc
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,94 @@
1
+ = indierockmedia-blavosync
2
+
3
+
4
+ BLAVOSYNC
5
+
6
+ adds the following tasks to projects using capistrano
7
+
8
+ ------------------------------------------------------------
9
+ cap local:backup_content
10
+ ------------------------------------------------------------
11
+ Downloads a tarball of shared content (identified by the :shared_content and
12
+ :content_directories properties) from a deployable environment (RAILS_ENV) to
13
+ the local filesystem.
14
+
15
+ ------------------------------------------------------------
16
+ cap local:backup_db
17
+ ------------------------------------------------------------
18
+ Backs up deployable environment's database (idgit loentified by the
19
+ RAILS_ENV environment variable, which defaults to 'production') and copies it to
20
+ the local machine
21
+
22
+ ------------------------------------------------------------
23
+ cap local:force_backup_content
24
+ ------------------------------------------------------------
25
+ Regenerate files.
26
+
27
+ ------------------------------------------------------------
28
+ cap local:force_backup_db
29
+ ------------------------------------------------------------
30
+ Regenerate files.
31
+
32
+ ------------------------------------------------------------
33
+ cap local:restore_content
34
+ ------------------------------------------------------------
35
+ Restores the backed up content (env var FROM specifies which environment
36
+ was backed up, defaults to RAILS_ENV) to the local development environment app
37
+
38
+ ------------------------------------------------------------
39
+ cap local:restore_db
40
+ ------------------------------------------------------------
41
+ Untars the backup file downloaded from local:backup_db (specified via the FROM
42
+ env
43
+ variable, which defalts to RAILS_ENV), and imports (via mysql command line tool)
44
+ it back into the database
45
+ defined in the RESTORE_ENV env variable (defaults to development).
46
+
47
+ ------------------------------------------------------------
48
+ cap local:resync_db
49
+ ------------------------------------------------------------
50
+ Ensure that a fresh remote data dump is retrieved before syncing to the local
51
+ environment
52
+
53
+ ------------------------------------------------------------
54
+ cap local:sync
55
+ ------------------------------------------------------------
56
+ Wrapper for local:sync_db and local:sync_content
57
+ $> cap local:sync RAILS_ENV=production RESTORE_ENV=development
58
+
59
+ ------------------------------------------------------------
60
+ cap local:sync_content
61
+ ------------------------------------------------------------
62
+ Wrapper for local:backup_content and local:restore_content
63
+ $> cap local:sync_content RAILS_ENV=production RESTORE_ENV=development
64
+
65
+ ------------------------------------------------------------
66
+ cap local:sync_db
67
+ ------------------------------------------------------------
68
+ Wrapper for local:backup_db and local:restore_db.
69
+ $> cap local:sync_db RAILS_ENV=production RESTORE_ENV=development
70
+
71
+ ------------------------------------------------------------
72
+ cap local:sync_init
73
+ ------------------------------------------------------------
74
+ Wrapper for local:force_backup_db, local:force_backup_content, and the
75
+ local:sync to get
76
+ a completely fresh set of data from the server
77
+ $> cap local:sync RAILS_ENV=production RESTORE_ENV=development
78
+
79
+
80
+
81
+
82
+ == Note on Patches/Pull Requests
83
+
84
+ * Fork the project.
85
+ * Make your feature addition or bug fix.
86
+ * Add tests for it. This is important so I don't break it in a
87
+ future version unintentionally.
88
+ * Commit, do not mess with rakefile, version, or history.
89
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
90
+ * Send me a pull request. Bonus points for topic branches.
91
+
92
+ == Copyright
93
+
94
+ Copyright (c) 2009 jayronc. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "blavosync"
8
+ gem.summary = %Q{Sync a remote db and rsync content to your development environment.}
9
+ gem.description = %Q{Sync a remote db and rsync content to your development environment. Useful for small teams and developers who are not able to do this manually.}
10
+ gem.email = "jerrodblavos@mac.com"
11
+ gem.homepage = "http://github.com/jerrod/Blavosync"
12
+ gem.authors = ["jayronc"]
13
+ gem.has_rdoc = false
14
+ gem.require_path = 'recipes'
15
+
16
+ end
17
+ Jeweler::GemcutterTasks.new
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
+ end
21
+
22
+
23
+ require 'rake/testtask'
24
+ Rake::TestTask.new(:test) do |test|
25
+ test.libs << 'lib' << 'test' << 'recipes'
26
+ test.pattern = 'test/**/test_*.rb'
27
+ test.verbose = true
28
+ end
29
+
30
+ begin
31
+ require 'rcov/rcovtask'
32
+ Rcov::RcovTask.new do |test|
33
+ test.libs << 'test' << 'recipes'
34
+ test.pattern = 'test/**/test_*.rb'
35
+ test.verbose = true
36
+ end
37
+ rescue LoadError
38
+ task :rcov do
39
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
40
+ end
41
+ end
42
+
43
+ task :test => :check_dependencies
44
+
45
+ task :default => :test
46
+
47
+ require 'rake/rdoctask'
48
+ Rake::RDocTask.new do |rdoc|
49
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
50
+
51
+ rdoc.rdoc_dir = 'rdoc'
52
+ rdoc.title = "blavosync #{version}"
53
+ rdoc.rdoc_files.include('README*')
54
+ rdoc.rdoc_files.include('recipes/**/*.rb')
55
+ rdoc.rdoc_files.include('lib/**/*.rb')
56
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
data/init.rb ADDED
@@ -0,0 +1,3 @@
1
+ ['lib/blavosync.rb','recipes/shared_sync.rb', 'recipes/content_rsync.rb', 'recipes/content_sync.rb', 'recipes/db_sync.rb'].each do |file|
2
+ load Dir[File.join(File.dirname(__FILE__), file)]
3
+ end
data/lib/blavosync.rb ADDED
File without changes
Binary file
Binary file
@@ -0,0 +1,37 @@
1
+ namespace :local do
2
+
3
+ desc <<-DESC
4
+ Rsyncs the your production content (identified by the :shared_content and
5
+ :content_directories properties) from a deployable environment (RAILS_ENV) to the local filesystem.
6
+ DESC
7
+ task :rsync_content do
8
+ from = ENV['FROM'] || 'production'
9
+ system("rsync -avz -e ssh '#{user}@#{domain}:#{content_path}' '#{rails_root}/tmp/'")
10
+ end
11
+
12
+ desc <<-DESC
13
+ Creates a symlink to public/system from tmp/system
14
+ DESC
15
+ task :rsync_restore_content do
16
+ # from = ENV['FROM'] || 'production'
17
+ print "\033[1;45m Linking Assets to public directory \033[0m\n"
18
+ system "ln -nfs #{rails_root}/tmp/system #{rails_root}/public/system"
19
+ end
20
+
21
+
22
+ desc <<-DESC
23
+ Wrapper for local:rsync_content and local:rsync_restore_content
24
+ $> cap local:rsync RAILS_ENV=production
25
+ DESC
26
+ task :rsync do
27
+ transaction do
28
+ rsync_content
29
+ rsync_restore_content
30
+ end
31
+ end
32
+ end
33
+
34
+
35
+ def generate_remote_content_backup
36
+ run "cd #{shared_path} && tar czf #{rsync_content_backup_file} 'system'"
37
+ end
@@ -0,0 +1,71 @@
1
+ namespace :local do
2
+
3
+ desc <<-DESC
4
+ Downloads a tarball of shared content (identified by the :shared_content and
5
+ :content_directories properties) from a deployable environment (RAILS_ENV) to the local filesystem.
6
+ DESC
7
+ task :backup_content do
8
+ files = retrieve_local_files('production', 'content')
9
+ timestamp = most_recent_local_backup(from_env, 'content').to_i
10
+ last_modified = last_mod_time(content_backup_file).to_i
11
+ should_redownload = !(timestamp == last_modified)
12
+ if should_redownload
13
+ generate_remote_content_backup if last_modified < (Time.now.to_i - (remote_backup_expires))
14
+ system("mkdir -p #{tmp_dir}")
15
+ download(content_backup_file, "#{local_content_backup_dir(:env => from_env, :timestamp=>last_modified)}.tar.#{zip_ext}", :via=> :scp) do|ch, name, sent, total|
16
+ print "\r\033[1;42m #{File.basename(name)}: #{sent}/#{total} -- #{(sent.to_f * 100 / total.to_f).to_i}% \033[0m"
17
+ end
18
+ else
19
+ print "\r\033[1;42m Your Files are already up-to-date \033[0m\n"
20
+ @current_timestamp = files.first.to_i
21
+ end
22
+ util::tmp::check
23
+ end
24
+
25
+ desc <<-DESC
26
+ Regenerate files.
27
+ DESC
28
+ task :force_backup_content do
29
+ generate_remote_content_backup
30
+ end
31
+
32
+ desc <<-DESC
33
+ Restores the backed up content (env var FROM specifies which environment
34
+ was backed up, defaults to RAILS_ENV) to the local development environment app
35
+ DESC
36
+ task :restore_content do
37
+ timestamp = most_recent_local_backup(from_env, 'content')
38
+ local_dir = local_content_backup_dir(:env => from_env, :timestamp=>timestamp)
39
+ print "\033[1;45m Local Dir: #{local_dir} \033[0m\n"
40
+ system "mkdir -p #{local_dir}"
41
+ system "tar xzf #{local_dir}.tar.#{zip_ext} -C #{local_dir}"
42
+ print "\033[1;45m Removing old public/system directory \033[0m\n"
43
+ system "rm -rf public/system"
44
+ print "\033[1;45m Moving Assets to public directory \033[0m\n"
45
+ system "mv #{local_dir}/system public/system"
46
+ print "\033[1;41m Cleaning up \033[0m\n"
47
+ system "rm -rf #{local_dir}"
48
+ end
49
+
50
+
51
+ desc <<-DESC
52
+ Wrapper for local:backup_content and local:restore_content
53
+ $> cap local:sync_content RAILS_ENV=production RESTORE_ENV=development
54
+ DESC
55
+ task :sync_content do
56
+ transaction do
57
+ backup_content
58
+ restore_content
59
+ end
60
+ end
61
+ end
62
+
63
+ def local_content_backup_dir(args={})
64
+ timestamp = args[:timestamp] || current_timestamp
65
+ "#{tmp_dir}/#{application}-#{from_env}-content-#{timestamp.to_s.strip}"
66
+ end
67
+
68
+
69
+ def generate_remote_content_backup
70
+ run "cd #{shared_path} && tar czf #{tar_content_backup_file} 'system'"
71
+ end
@@ -0,0 +1,104 @@
1
+ namespace :local do
2
+ desc <<-DESC
3
+ Backs up deployable environment's database (identified by the
4
+ RAILS_ENV environment variable, which defaults to 'production') and copies it to the local machine
5
+ DESC
6
+ task :backup_db, :roles => :db do
7
+ files = retrieve_local_files(from_env, 'db')
8
+ timestamp = most_recent_local_backup(from_env, 'db').to_i
9
+ last_modified = last_mod_time(db_backup_zip_file).to_i
10
+
11
+ if last_modified < (Time.now.to_i - (remote_backup_expires))
12
+ generate_remote_db_backup
13
+ should_redownload = true
14
+ end
15
+ should_redownload = !(timestamp == last_modified)
16
+ if should_redownload
17
+ system "mkdir -p #{tmp_dir}"
18
+ download(db_backup_zip_file, "#{local_db_backup_file(:env=>from_env, :timestamp=>last_modified)}.#{zip_ext}", :via=> :scp) do|ch, name, sent, total|
19
+ print "\r\033[1;42m #{File.basename(name)}: #{sent}/#{total} -- #{(sent.to_f * 100 / total.to_f).to_i}% \033[0m"
20
+ end
21
+ else
22
+ print "\r\033[1;42m Your Files are already up-to-date \033[0m\n"
23
+ @current_timestamp = files.first.to_i
24
+ end
25
+ end
26
+
27
+ desc <<-DESC
28
+ Regenerate files.
29
+ DESC
30
+ task :force_backup_db do
31
+ generate_remote_db_backup
32
+ end
33
+
34
+ desc <<-DESC
35
+ Untars the backup file downloaded from local:backup_db (specified via the FROM env
36
+ variable, which defalts to RAILS_ENV), and imports (via mysql command line tool) it back into the database
37
+ defined in the RESTORE_ENV env variable (defaults to development).
38
+ DESC
39
+ task :restore_db, :roles => :db do
40
+ mysql_str = "mysql #{mysql_connection_for(to_env)}"
41
+ mysql_dump = "mysqldump #{mysql_connection_for(from_env)}"
42
+ local_db_create = "mysql #{mysql_connection_for(to_env)} -e \"create database if not exists #{mysql_db_for(to_env)}\""
43
+ remote_backup_file = local_db_backup_file(:env => from_env, :timestamp=>most_recent_local_backup(from_env, 'db')).strip
44
+
45
+ puts "\n\033[1;42m Restoring database backup to #{to_env} environment FROM #{remote_backup_file}--#{from_env} using #{mysql_str}\033[0m"
46
+ system(local_db_create.strip)
47
+ cmd = ""
48
+ cmd << <<-CMD
49
+ #{unzip} -c #{remote_backup_file}.#{zip_ext} > #{remote_backup_file} &&
50
+ #{mysql_str} < #{remote_backup_file} &&
51
+ rm -f #{remote_backup_file}
52
+ CMD
53
+ system(cmd.strip)
54
+ util::tmp::check
55
+ end
56
+
57
+ desc <<-DESC
58
+ Wrapper for local:backup_db and local:restore_db.
59
+ $> cap local:sync_db RAILS_ENV=production RESTORE_ENV=development
60
+ DESC
61
+ task :sync_db do
62
+ transaction do
63
+ backup_db
64
+ restore_db
65
+ end
66
+ end
67
+
68
+ desc <<-DESC
69
+ Ensure that a fresh remote data dump is retrieved before syncing to the local environment.
70
+ DESC
71
+ task :resync_db do
72
+ util::tmp::clean_remote
73
+ sync_db
74
+ end
75
+
76
+ end
77
+
78
+
79
+ def generate_remote_db_backup
80
+ run "mysqldump #{mysql_connection_for(from_env)} > #{db_backup_file}"
81
+ run "rm -f #{db_backup_zip_file} && #{zip} #{db_backup_file} && rm -f #{db_backup_file}"
82
+ end
83
+
84
+ def local_db_backup_file(args = {})
85
+ env = args[:env] || 'production'
86
+ timestamp = args[:timestamp] || current_timestamp
87
+ "#{tmp_dir}/#{application}-#{env}-db-#{timestamp.to_s.strip}.sql"
88
+ end
89
+
90
+ def mysql_connection_for(environment)
91
+ db_settings = YAML.load_file(local_db_conf(environment))[environment]
92
+ pass = pluck_pass_str(db_settings)
93
+ host = (db_settings['host'].nil?) ? nil : "--host=#{db_settings['host']}"
94
+ socket = (db_settings['socket'].nil?) ? nil : "--socket=#{db_settings['socket']}"
95
+ user = (db_settings['username'].nil?) ? nil : "-u #{db_settings['username']}"
96
+ database = (db_settings['database'].nil?) ? nil : " #{db_settings['database']}"
97
+ [user, pass, host, socket, database ].join(" ")
98
+ end
99
+
100
+ def mysql_db_for(environment)
101
+ restore_from = ENV['FROM'] || 'production'
102
+ @from_db ||= YAML.load_file(local_db_conf(restore_from))[restore_from]
103
+ @from_database ||= (@from_db['database'].nil?) ? nil : " #{@from_db['database']}"
104
+ end
@@ -0,0 +1,96 @@
1
+ set :rails_root, fetch(:blavosync_local_root, Pathname.new('.').realpath )
2
+ set :content_dir, fetch(:blavosync_content_directories, content_directories ||= "system" )
3
+ set :content_path, fetch(:blavosync_content_path, File.join(shared_path, content_dir) )
4
+ set :public_path, fetch(:blavosync_public_path, File.join(latest_release, 'public') )
5
+ set :remote_backup_expires, fetch(:blavosync_remote_backup_expires, 100000 )
6
+ set :zip, fetch(:blavosync_zip_command, "gzip" )
7
+ set :unzip, fetch(:blavosync_unzip_command, "gunzip" )
8
+ set :zip_ext, fetch(:blavosync_compressed_extension, "gz" )
9
+ set :tmp_dir, fetch(:blavosync_tmp_dir, "tmp" )
10
+ set :content_sync_method, fetch(:blavosync_content_sync_method, 'rsync' )
11
+ set :from_env, fetch(:blavosync_from_env, (ENV['FROM_ENV'].nil? ? 'production' : ENV['RAILS_ENV']) )
12
+ set :to_env, fetch(:blavosync_to_env, (ENV['TO_ENV'].nil? ? 'development' : ENV['TO_ENV']) )
13
+ set :rsync_content_backup_file, fetch(:blavosync_rsync_content_backup_file, "#{shared_path}/system" )
14
+ set :tar_content_backup_file, fetch(:blavosync_tar_content_backup_file, "#{shared_path}/backup_#{from_env}_content.tar.#{zip_ext}" )
15
+ set :db_backup_file, fetch(:blavosync_db_backup_file, "#{shared_path}/backup_#{from_env}_db.sql" )
16
+ set :db_backup_zip_file, fetch(:blavosync_db_backup_zip_file, "#{db_backup_file}.#{zip_ext}" )
17
+
18
+
19
+ def local_db_conf(env = nil)
20
+ env ||= fetch(:to_env)
21
+ fetch(:config_structure, :rails).to_sym == :sls ?
22
+ File.join('config', env.to_s, 'database.yml') :
23
+ File.join('config', 'database.yml')
24
+ end
25
+
26
+ def pluck_pass_str(db_config)
27
+ db_config['password'].nil? ? '' : "-p'#{db_config['password']}'"
28
+ end
29
+
30
+ def current_timestamp
31
+ @current_timestamp ||= Time.now.to_i.to_s.strip
32
+ end
33
+
34
+ def retrieve_local_files(env, type)
35
+ `ls -r #{tmp_dir} | awk -F"-" '{ if ($2 ~ /#{env}/ && $3 ~ /#{type}/) { print $4; } }'`.split(' ')
36
+ end
37
+
38
+ def most_recent_local_backup(env, type)
39
+ retrieve_local_files(env, type).first.to_i
40
+ end
41
+
42
+ def last_mod_time(path)
43
+ capture("stat -c%Y #{path}")
44
+ end
45
+
46
+ def server_cache_valid?(path)
47
+ capture("[ -f #{path} ] || echo '1'").empty? && ((Time.now.to_i - last_mod_time(path)) <= remote_backup_expires)
48
+ end
49
+
50
+ namespace :util do
51
+
52
+ namespace :tmp do
53
+ desc "[capistrano-extensions]: Displays warning if :tmp_dir has more than 10 files or is greater than 50MB"
54
+ task :check do
55
+ #[ 5 -le "`ls -1 tmp/cap | wc -l`" ] && echo "Display Me"
56
+ cmd = %Q{ [ 10 -le "`ls -1 #{tmp_dir} | wc -l`" ] || [ 50 -le "`du -sh #{tmp_dir} | awk '{print int($1)}'`" ] && printf "\033[1;41m Clean up #{tmp_dir} directory \033[0m\n" && du -sh #{tmp_dir}/* }
57
+ system(cmd)
58
+ end
59
+
60
+ desc "[capistrano-extensions]: Remove the current remote env's backups from :tmp_dir"
61
+ task :clean_remote do
62
+ system("rm -rf #{rails_root}/#{tmp_dir}/#{fetch(:application)}-*")
63
+ end
64
+
65
+ end
66
+ end
67
+
68
+ namespace :local do
69
+ desc <<-DESC
70
+ Wrapper for local:sync_db and local:sync_content
71
+ $> cap local:sync RAILS_ENV=production RESTORE_ENV=development
72
+ DESC
73
+ task :sync do
74
+ sync_db
75
+ if content_sync_method == 'tar'
76
+ sync_content
77
+ else
78
+ rsync_content
79
+ end
80
+ end
81
+
82
+ desc <<-DESC
83
+ Wrapper for local:force_backup_db, local:force_backup_content, and the local:sync to get
84
+ a completely fresh set of data from the server
85
+ $> cap local:sync RAILS_ENV=production RESTORE_ENV=development
86
+ DESC
87
+ task :sync_init do
88
+ force_backup_db
89
+ force_backup_content
90
+ sync
91
+ end
92
+
93
+ task :test_root do
94
+ puts "RAILS_ROOT #{rails_root}"
95
+ end
96
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blavosync
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - jayronc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-12-29 00:00:00 -05:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Sync a remote db and rsync content to your development environment. Useful for small teams and developers who are not able to do this manually.
17
+ email: jerrodblavos@mac.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - LICENSE
24
+ - README.rdoc
25
+ files:
26
+ - Blavosync.gemspec
27
+ - LICENSE
28
+ - README.rdoc
29
+ - Rakefile
30
+ - VERSION
31
+ - init.rb
32
+ - lib/blavosync.rb
33
+ - pkg/blavosync-0.0.0.pre1.gem
34
+ - pkg/blavosync-0.0.1.gem
35
+ - recipes/content_rsync.rb
36
+ - recipes/content_sync.rb
37
+ - recipes/db_sync.rb
38
+ - recipes/shared_sync.rb
39
+ has_rdoc: true
40
+ homepage: http://github.com/jerrod/Blavosync
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options:
45
+ - --charset=UTF-8
46
+ require_paths:
47
+ - recipes
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ version:
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ version:
60
+ requirements: []
61
+
62
+ rubyforge_project:
63
+ rubygems_version: 1.3.5
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: Sync a remote db and rsync content to your development environment.
67
+ test_files: []
68
+