capistrano_transmit 0.1.0

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/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 [name of plugin creator]
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,50 @@
1
+ = Capistrano Transmit
2
+
3
+ Rails tasks to work with production data and assets.
4
+
5
+ This Ruby on Rails plugin allows you to fetch the production database and
6
+ assets and store them in your local development environment. For reasonably
7
+ sized projects, you should do this regularly since you will notice typical
8
+ production-related slowdowns such as missing indexes. The task to fetch
9
+ assets helps keep your images un-broken, which is always nice.
10
+
11
+ The only thing this plugin does, is extend Capistrano. No Rails code is loaded.
12
+ Capistrano loads the scripts in the recipes directory, and that's just what we
13
+ need.
14
+
15
+ The plugin uses rsync to transfer the files, which means any existing files are
16
+ skipped and/or appended based on their checksum. The transfers are compressed
17
+ as well so we don't need to gzip the contents first. All this assumes both your
18
+ production and development environment are Unix. Tested on Linux production and
19
+ Mac OS X development.
20
+
21
+ == Installation
22
+
23
+ ruby script/plugin install git://github.com/tilsammans/capistrano_transmit.git
24
+
25
+ or in your +Gemfile+:
26
+
27
+ gem 'capistrano_transmit'
28
+
29
+ Then add to your deploy.rb:
30
+
31
+ require 'capistrano/transmit'
32
+
33
+ == Examples
34
+
35
+ cap transmit:get:mysql # Fetch the remote production MySQL database
36
+ # and overwrite your local development database with it
37
+ cap transmit:get:assets # Fetch the remote assets into your local development environment
38
+
39
+
40
+ cap transmit:put:mysql # Overwrite the production MySQL database with your development data
41
+
42
+ == Prerequisites
43
+
44
+ This Capistrano extension assumes some variables are present in your deploy.rb:
45
+
46
+ user # the SSH user for connecting to the deploy host
47
+ deploy_host # the host on which to run the db dump
48
+
49
+
50
+ Copyright (c) 2010 Joost Baaij, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('capistrano_transmit', '0.1.0') do |p|
6
+ p.summary = "Copies mysql databases between remote production and local development servers."
7
+ p.url = "http://github.com/tilsammans/capistrano_transmit"
8
+ p.author = "Joost Baaij"
9
+ p.email = "joost@spacebabies.nl"
10
+ p.runtime_dependencies = ["capistrano"]
11
+ p.development_dependencies = []
12
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{capistrano_transmit}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Joost Baaij"]
9
+ s.date = %q{2011-07-21}
10
+ s.description = %q{Copies mysql databases between remote production and local development servers.}
11
+ s.email = %q{joost@spacebabies.nl}
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/capistrano/transmit.rb"]
13
+ s.files = ["MIT-LICENSE", "README.rdoc", "Rakefile", "lib/capistrano/transmit.rb", "capistrano_transmit.gemspec"]
14
+ s.homepage = %q{http://github.com/tilsammans/capistrano_transmit}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Capistrano_transmit", "--main", "README.rdoc"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{capistrano_transmit}
18
+ s.rubygems_version = %q{1.3.7}
19
+ s.summary = %q{Copies mysql databases between remote production and local development servers.}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<capistrano>, [">= 0"])
27
+ else
28
+ s.add_dependency(%q<capistrano>, [">= 0"])
29
+ end
30
+ else
31
+ s.add_dependency(%q<capistrano>, [">= 0"])
32
+ end
33
+ end
@@ -0,0 +1,53 @@
1
+ unless Capistrano::Configuration.respond_to?(:instance)
2
+ abort "capistrano/transmit requires Capistrano 2"
3
+ end
4
+
5
+ Capistrano::Configuration.instance.load do
6
+ after "transmit:get:mysql", "transmit:cleanup"
7
+ after "transmit:put:mysql", "transmit:cleanup"
8
+
9
+ namespace :transmit do
10
+ namespace :get do
11
+ desc 'Fetch the remote production database and overwrite your local development database with it'
12
+ task :mysql, :roles => :db do
13
+ run "mysqldump --opt --quick --extended-insert --skip-lock-tables -u #{db_remote['username']} --password='#{db_remote['password']}' --host='#{db_remote['host']}' #{db_remote['database']} | gzip > #{dumpfile}"
14
+
15
+ system "rsync -vP #{user}@#{deploy_host}:#{dumpfile} tmp/#{db_local["database"]}.sql.gz"
16
+ system "gunzip < tmp/#{db_local["database"]}.sql.gz | mysql -u #{db_local['username']} --password='#{db_local['password']}' --host='#{db_local['host']}' #{db_local['database']}"
17
+ end
18
+
19
+ desc 'Fetch the assets from the production server to the development environment'
20
+ task :assets, :roles => :app do
21
+ system "rsync -Lcrvz #{user}@#{deploy_host}:#{current_path}/public ."
22
+ end
23
+ end
24
+
25
+ namespace :put do
26
+ desc 'Upload the local development database to the remote production database and overwrite it'
27
+ task :mysql, :roles => :db do
28
+ system "mysqldump --opt -u #{db_local['username']} --password='#{db_local['password']}' --host='#{db_local['host']}' #{db_local['database']} > tmp/#{db_local['database']}.sql"
29
+
30
+ system "rsync -vP tmp/#{db_local['database']}.sql #{user}@#{deploy_host}:#{dumpfile}"
31
+ run "mysql -u #{db_remote['username']} --password='#{db_remote['password']}' --host='#{db_remote['host']}' #{db_remote['database']} < #{dumpfile}"
32
+ end
33
+ end
34
+
35
+ task :cleanup do
36
+ run "rm #{dumpfile}"
37
+ system "rm tmp/#{db_local['database']}.sql.gz"
38
+ end
39
+ end
40
+
41
+ set(:db_remote) do
42
+ db_config = capture "cat #{current_path}/config/database.yml"
43
+ YAML::load(db_config)['production']
44
+ end
45
+
46
+ set(:db_local) do
47
+ YAML::load_file("config/database.yml")['development']
48
+ end
49
+
50
+ set :dumpfile do
51
+ "#{current_path}/tmp/#{db_remote['database']}.sql.gz"
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capistrano_transmit
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Joost Baaij
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-07-21 00:00:00 +02:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: capistrano
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ description: Copies mysql databases between remote production and local development servers.
28
+ email: joost@spacebabies.nl
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files:
34
+ - README.rdoc
35
+ - lib/capistrano/transmit.rb
36
+ files:
37
+ - MIT-LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - lib/capistrano/transmit.rb
41
+ - capistrano_transmit.gemspec
42
+ has_rdoc: true
43
+ homepage: http://github.com/tilsammans/capistrano_transmit
44
+ licenses: []
45
+
46
+ post_install_message:
47
+ rdoc_options:
48
+ - --line-numbers
49
+ - --inline-source
50
+ - --title
51
+ - Capistrano_transmit
52
+ - --main
53
+ - README.rdoc
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: "0"
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "1.2"
68
+ requirements: []
69
+
70
+ rubyforge_project: capistrano_transmit
71
+ rubygems_version: 1.6.2
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: Copies mysql databases between remote production and local development servers.
75
+ test_files: []
76
+