capistrano-bundle_rsync 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 947571b6493b5ee9d817038173d85843861ee994
4
- data.tar.gz: 81ad9af1b67a3fe55548e179bca2db5f12ea61aa
3
+ metadata.gz: 57fd444228ffd2aaa2b08ae8a3aa48d641709f98
4
+ data.tar.gz: 04086f39219dc6ff6922e4a09596907b105a8a61
5
5
  SHA512:
6
- metadata.gz: 15002e2ae62bd357856bedb2e9baba480a65457fc26765f11ebb40a26d8d8c0f20071a2c184ef298b04b606ec2424dbf20a35785b42ed231b043f604d52b6746
7
- data.tar.gz: 2472e6d00b1da760721fa0ebd7122cb97df1c2319ea8b0e48f35ae9e3401dc580a5485246500b3a3477ac4f9b59f581de57941970ad472911fa0e1e327693d07
6
+ metadata.gz: 76e50e567ac213341bafb10e0dc0060a6fe6aba2bb4c5ed46e4c8fd3e9b5f50b34227083d245abcb59f673f1788c4330f21d0c3c01000703b3100a2970c93641
7
+ data.tar.gz: d4ffdd544a4d85f5b558940bef818000e3edb1cdc98106976340c9003eb099f59f1ae5428b911357472a636598c560853da5d47e3727eac50e184e98ab8baa9e
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ example/.local_repo
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ # 0.2.0 (2014/07/11)
2
+
3
+ Enhancements:
4
+
5
+ * Support `bundle_rsync_keep_releases` configuration
6
+ * Newly add `set :bundle_rsync_scm 'local_git'` configuration
7
+
8
+ Changes:
9
+
10
+ * Rename `bundle_rsync_local_repo_path` to `bundle_rsync_local_mirror_path`
11
+
1
12
  # 0.1.1 (2014/07/09)
2
13
 
3
14
  Enhancements:
data/README.md CHANGED
@@ -12,7 +12,7 @@ Also saves you from having to install Git and Build Tools on your production mac
12
12
 
13
13
  Capistrano::BundleRsync works as followings:
14
14
 
15
- 1. Do `git clone --mirror URL .local_repo/repo` on a deploy (local) machine.
15
+ 1. Do `git clone --mirror URL .local_repo/mirror` on a deploy (local) machine.
16
16
  2. Extract a branch by `git archive {branch}` to `.local_repo/release_{time}`
17
17
  4. Deploy the `release` directory to remote machines by `rsync`.
18
18
  3. Do `bundle --without development,test --path .local_repo/bundle` on a deploy (local) machine.
@@ -48,16 +48,21 @@ Name | Default | Description
48
48
  repo_url | `.` | The path or URL to a Git repository to clone from.
49
49
  branch | `master` | The Git branch to checkout.
50
50
  ssh_options | `{}` | Configuration of ssh :user and :keys.
51
- bundle_rsync_local_base_path | `$(pwd)/.local_repo` | The working base directory
52
- bundle_rsync_local_repo_path | `#{base_path}/repo"` | Path where to mirror your repository
53
- bundle_rsync_local_release_path | `"#{base_path}/relase_#{Time.now.to_i}"` | Path where to checkout your repository
51
+ keep\_releases | 5 | The number of releases to keep.
52
+ scm | nil | Must be `bundle_rsync` to use capistrano-bundle_rsync.
53
+ bundle_rsync_local_base_path | `$(pwd)/.local_repo` | The base directory to clone repository
54
+ bundle_rsync_local_mirror_path | `#{base_path}/mirror"` | Path where to mirror your repository
55
+ bundle_rsync_local_releases_path | `"#{base_path}/releases"` | Path of the directory to checkout your repository
56
+ bundle_rsync_local_release_path | `"#{release_dir}/#{time}"` | Path to checkout your repository (releases_path + release_name)
54
57
  bundle_rsync_local_bundle_path | `"#{base_path}/bundle"` | Path where to bundle install gems.
55
58
  bundle_rsync_local_bin_path | `"#{base_path}/bin"` | Path where to bundle install bin scripts.
56
59
  bundle_rsync_config_files | `nil` | Additional files to rsync. Specified files are copied into `config` directory.
57
60
  bundle_rsync_ssh_options | `ssh_options` | Configuration of ssh for rsync. Default uses the value of `ssh_options`
61
+ bundle_rsync_keep_releases | `keep_releases` | The number of releases to keep on .local_repo
58
62
  bundle_rsync_max_parallels | number of hosts | Number of concurrency. The default is the number of hosts to deploy.
59
63
  bundle_rsync_rsync_bwlimit | nil | Configuration of rsync --bwlimit (KBPS) option. Not Avabile if `bundle_rsync_rsync_options` is specified.
60
64
  bundle_rsync_rsync_options | `-az --delete` | Configuration of rsync options.
65
+ bundle_rsync_scm | 'git' or 'local_git' | SCM Strategy inside `bundle_rsync`. `git` uses git. `local_git` also uses git, but it enables to rsync the git repository located on local path directly without git clone. `repo_url` must be the local directory path to use `local_git`.
61
66
 
62
67
  ## Installation
63
68
 
@@ -162,7 +167,7 @@ A. capistrano-bundle\_rsync does `bundle install` at the deploy machine, not on
162
167
 
163
168
  ## ToDo
164
169
 
165
- 2. Support other SCMs than `git`.
170
+ 1. Support other SCMs than `git`.
166
171
 
167
172
  ## ChangeLog
168
173
 
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "capistrano-bundle_rsync"
7
- spec.version = "0.1.1"
7
+ spec.version = "0.2.0"
8
8
  spec.authors = ["sonots", "tohae"]
9
9
  spec.email = ["sonots@gmail.com", "tohaechan@gmail.com"]
10
10
  spec.description = %q{Deploy an application and bundled gems via rsync}
data/example/Capfile ADDED
@@ -0,0 +1,12 @@
1
+ # Load DSL and Setup Up Stages
2
+ require 'capistrano/setup'
3
+
4
+ # Includes default deployment tasks
5
+ require 'capistrano/deploy'
6
+
7
+ # Includes tasks from other gems included in your Gemfile
8
+ require 'capistrano/rbenv'
9
+ require 'capistrano/bundle_rsync'
10
+
11
+ # Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
12
+ Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
data/example/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'capistrano'
4
+ gem 'capistrano-rbenv'
5
+ gem 'capistrano-bundle_rsync', path: '../'
6
+ gem 'pry'
7
+ gem 'pry-nav'
@@ -0,0 +1,4 @@
1
+ set :bundle_rsync_scm, 'local_git'
2
+ set :repo_url, "#{ENV['HOME']}/src/github.com/sonots/try_rails4"
3
+
4
+ role :app, ['127.0.0.1']
@@ -0,0 +1,5 @@
1
+ set :bundle_rsync_scm, 'git'
2
+ set :repo_url, 'https://github.com/sonots/try_rails4'
3
+ set :branch, 'master'
4
+
5
+ role :app, ['127.0.0.1']
@@ -0,0 +1,28 @@
1
+ # config valid only for Capistrano 3.2.1
2
+ lock '3.2.1'
3
+
4
+ set :user, 'game'
5
+ set :ssh_options, user: ENV['USER'], keys: [File.expand_path('~/.ssh/id_rsa')]
6
+ # set :default_env, { path: "/opt/ruby/bin:$PATH" }
7
+
8
+ set :linked_dirs, %w(bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system tmp/run)
9
+ set :keep_releases, 5
10
+ set :rbenv_type, :user
11
+ set :rbenv_ruby, '2.1.2'
12
+ set :deploy_to, "#{ENV['HOME']}/sample"
13
+
14
+ set :scm, :bundle_rsync
15
+ set :bundle_rsync_max_parallels, ENV['PARA']
16
+ set :bundle_rsync_rsync_bwlimit, ENV['BWLIMIT'] # like 20000
17
+
18
+ namespace :deploy do
19
+ desc 'Restart web application'
20
+ task :restart do
21
+ on roles(:web), in: :sequence, wait: 5 do
22
+ # execute some restart code
23
+ end
24
+ end
25
+
26
+ after :finishing, 'deploy:cleanup'
27
+ # after :publishing, :restart
28
+ end
@@ -0,0 +1,14 @@
1
+ require 'delegate'
2
+ require 'capistrano/bundle_rsync/config'
3
+
4
+ module Capistrano::BundleRsync
5
+ class Base < SimpleDelegator
6
+ def initialize(delegator)
7
+ super(delegator)
8
+ end
9
+
10
+ def config
11
+ Capistrano::BundleRsync::Config
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,59 @@
1
+ require 'capistrano/bundle_rsync/base'
2
+
3
+ class Capistrano::BundleRsync::Bundler < Capistrano::BundleRsync::Base
4
+ def prepare
5
+ hosts = release_roles(:all)
6
+ on hosts, in: :groups, limit: config.max_parallels(hosts) do
7
+ within release_path do
8
+ execute :mkdir, '-p', '.bundle'
9
+ end
10
+ end
11
+ end
12
+
13
+ def install
14
+ hosts = release_roles(:all)
15
+ Bundler.with_clean_env do
16
+ execute :bundle, "--gemfile #{config.local_release_path}/Gemfile --deployment --quiet --path #{config.local_bundle_path} --without development test --binstubs=#{config.local_bin_path}"
17
+ end
18
+
19
+ lines = <<-EOS
20
+ ---
21
+ BUNDLE_FROZEN: '1'
22
+ BUNDLE_PATH: #{shared_path.join('bundle')}
23
+ BUNDLE_WITHOUT: development:test
24
+ BUNDLE_DISABLE_SHARED_GEMS: '1'
25
+ BUNDLE_BIN: #{shared_path.join('bin')}
26
+ EOS
27
+ bundle_config_path = "#{config.local_base_path}/bundle_config"
28
+ File.open(bundle_config_path, "w") {|file| file.print(lines) }
29
+
30
+ rsync_options = config.rsync_options
31
+ Parallel.each(hosts, in_processes: config.max_parallels(hosts)) do |host|
32
+ ssh = config.build_ssh_command(host)
33
+ if config_files = config.config_files
34
+ config_files.each do |config_file|
35
+ basename = File.basename(config_file)
36
+ execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config_file} #{host}:#{release_path}/config/#{basename}"
37
+ end
38
+ end
39
+
40
+ execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config.local_bundle_path}/ #{host}:#{shared_path}/bundle/"
41
+ execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config.local_bin_path}/ #{host}:#{shared_path}/bin/"
42
+ execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{bundle_config_path} #{host}:#{release_path}/.bundle/config"
43
+ end
44
+
45
+ # Do not remove if :bundle_rsync_local_release_path is directly specified.
46
+ unless fetch(:bundle_rsync_local_release_path)
47
+ releases = capture(:ls, '-x', config.local_releases_path).split
48
+ if releases.count >= config.keep_releases
49
+ directories = (releases - releases.last(config.keep_releases))
50
+ if directories.any?
51
+ directories_str = directories.map do |release|
52
+ releases_path.join(release)
53
+ end.join(" ")
54
+ execute :rm, '-rf', directories_str
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -4,12 +4,16 @@ module Capistrano::BundleRsync
4
4
  @local_base_path ||= fetch(:bundle_rsync_local_base_path) || "#{Dir::pwd}/.local_repo"
5
5
  end
6
6
 
7
- def self.local_repo_path
8
- @local_repo_path ||= fetch(:bundle_rsync_local_repo_path) || "#{local_base_path}/repo"
7
+ def self.local_mirror_path
8
+ @local_mirror_path ||= fetch(:bundle_rsync_local_mirror_path) || "#{local_base_path}/mirror"
9
+ end
10
+
11
+ def self.local_releases_path
12
+ @local_releases_path ||= fetch(:bundle_rsync_local_releases_path) || "#{local_base_path}/releases"
9
13
  end
10
14
 
11
15
  def self.local_release_path
12
- @local_release_path ||= fetch(:bundle_rsync_local_release_path) || "#{local_base_path}/release_#{Time.now.to_i}"
16
+ @local_release_path ||= fetch(:bundle_rsync_local_release_path) || "#{local_releases_path}/#{Time.new.strftime('%Y%m%d%H%M%S')}"
13
17
  end
14
18
 
15
19
  def self.local_bundle_path
@@ -69,6 +73,10 @@ module Capistrano::BundleRsync
69
73
  "ssh#{user_opt}#{key_opt}#{port_opt}"
70
74
  end
71
75
 
76
+ def self.keep_releases
77
+ @keep_releases = fetch(:bundle_rsync_keep_releases) || fetch(:keep_releases)
78
+ end
79
+
72
80
  # Fetch the :bundle_rsync_max_parallels,
73
81
  # where the default is the number of hosts
74
82
  def self.max_parallels(hosts)
@@ -0,0 +1,43 @@
1
+ require 'capistrano/bundle_rsync/scm'
2
+
3
+ class Capistrano::BundleRsync::Git < Capistrano::BundleRsync::SCM
4
+ def check
5
+ exit 1 unless execute("git ls-remote #{repo_url}")
6
+ execute("mkdir -p #{config.local_base_path}")
7
+ end
8
+
9
+ def clone
10
+ if File.exist?("#{config.local_mirror_path}/HEAD")
11
+ info t(:mirror_exists, at: config.local_mirror_path)
12
+ else
13
+ execute :git, :clone, '--mirror', repo_url, config.local_mirror_path
14
+ end
15
+ end
16
+
17
+ def update
18
+ within config.local_mirror_path do
19
+ execute :git, :remote, :update
20
+ end
21
+ end
22
+
23
+ def create_release
24
+ hosts = release_roles(:all)
25
+ execute "mkdir -p #{config.local_release_path}"
26
+
27
+ within config.local_mirror_path do
28
+ execute :git, :archive, fetch(:branch), '| tar -x -C', "#{config.local_release_path}"
29
+ end
30
+
31
+ rsync_options = config.rsync_options
32
+ Parallel.each(hosts, in_processes: config.max_parallels(hosts)) do |host|
33
+ ssh = config.build_ssh_command(host)
34
+ execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config.local_release_path}/ #{host}:#{release_path}/"
35
+ end
36
+ end
37
+
38
+ def set_current_revision
39
+ within config.local_mirror_path do
40
+ set :current_revision, capture(:git, "rev-parse --short #{fetch(:branch)}")
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,42 @@
1
+ require 'capistrano/bundle_rsync/scm'
2
+
3
+ class Capistrano::BundleRsync::LocalGit < Capistrano::BundleRsync::SCM
4
+ def check
5
+ raise ArgumentError.new('`repo_url` must be local path to use `local_git` scm') unless local_path?(repo_url)
6
+ exit 1 unless execute("git ls-remote #{repo_url}")
7
+ execute("mkdir -p #{config.local_base_path}")
8
+ end
9
+
10
+ def clone
11
+ end
12
+
13
+ def update
14
+ end
15
+
16
+ def create_release
17
+ hosts = release_roles(:all)
18
+ rsync_options = config.rsync_options
19
+ Parallel.each(hosts, in_processes: config.max_parallels(hosts)) do |host|
20
+ ssh = config.build_ssh_command(host)
21
+ execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{repo_url}/ #{host}:#{release_path}/"
22
+ end
23
+ end
24
+
25
+ def set_current_revision
26
+ within repo_url do
27
+ set :current_revision, capture(:git, "rev-parse --short HEAD")
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def local_path?(repo_url)
34
+ return !(
35
+ repo_url.start_with?('http://') or
36
+ repo_url.start_with?('https://') or
37
+ repo_url.start_with?('git://') or
38
+ repo_url.start_with?('git@') or
39
+ repo_url.start_with?('ssh://')
40
+ )
41
+ end
42
+ end
@@ -0,0 +1,80 @@
1
+ require 'capistrano/bundle_rsync/base'
2
+
3
+ # Base class for SCM strategy providers.
4
+ #
5
+ # @abstract
6
+ class Capistrano::BundleRsync::SCM < Capistrano::BundleRsync::Base
7
+ # @abstract
8
+ #
9
+ # Your implementation should check the existence of a cache repository on
10
+ # the deployment target
11
+ #
12
+ # @return [Boolean]
13
+ #
14
+ def test
15
+ raise NotImplementedError.new(
16
+ "Your SCM strategy module should provide a #test method"
17
+ )
18
+ end
19
+
20
+ # @abstract
21
+ #
22
+ # Your implementation should check if the specified remote-repository is
23
+ # available.
24
+ #
25
+ # @return [Boolean]
26
+ #
27
+ def check
28
+ raise NotImplementedError.new(
29
+ "Your SCM strategy module should provide a #check method"
30
+ )
31
+ end
32
+
33
+ # @abstract
34
+ #
35
+ # Create a (new) clone of the remote-repository on the deployment target
36
+ #
37
+ # @return void
38
+ #
39
+ def clone
40
+ raise NotImplementedError.new(
41
+ "Your SCM strategy module should provide a #clone method"
42
+ )
43
+ end
44
+
45
+ # @abstract
46
+ #
47
+ # Update the clone on the deployment target
48
+ #
49
+ # @return void
50
+ #
51
+ def update
52
+ raise NotImplementedError.new(
53
+ "Your SCM strategy module should provide a #update method"
54
+ )
55
+ end
56
+
57
+ # @abstract
58
+ #
59
+ # Copy the contents of the cache-repository onto the release path
60
+ #
61
+ # @return void
62
+ #
63
+ def create_release
64
+ raise NotImplementedError.new(
65
+ "Your SCM strategy module should provide a #create_release method"
66
+ )
67
+ end
68
+
69
+ # @abstract
70
+ #
71
+ # Identify the SHA of the commit that will be deployed. This will most likely involve SshKit's capture method.
72
+ #
73
+ # @return void
74
+ #
75
+ def set_current_revision
76
+ raise NotImplementedError.new(
77
+ "Your SCM strategy module should provide a #set_current_revision method"
78
+ )
79
+ end
80
+ end
@@ -3,5 +3,4 @@ module Capistrano
3
3
  end
4
4
  end
5
5
 
6
- require 'capistrano/bundle_rsync/config'
7
6
  load File.expand_path('../tasks/bundle_rsync.rake', __FILE__)
@@ -2,126 +2,69 @@ unless defined?(Capistrano::BundleRsync::TASK_LOADED) # protect multiple loads
2
2
  Capistrano::BundleRsync::TASK_LOADED = true
3
3
  require 'fileutils'
4
4
  require 'parallel'
5
+ require 'capistrano/bundle_rsync/bundler'
5
6
 
6
7
  namespace :bundle_rsync do
7
- def config
8
- Capistrano::BundleRsync::Config
8
+ def bundler
9
+ @bundler ||= Capistrano::BundleRsync::Bundler.new(self)
9
10
  end
10
11
 
11
- namespace :bundler do
12
- task :install do
13
- hosts = roles(:all)
14
- on hosts, in: :groups, limit: config.max_parallels(hosts) do
15
- within release_path do
16
- execute :mkdir, '-p', '.bundle'
17
- end
12
+ def scm
13
+ @scm ||=
14
+ if fetch(:bundle_rsync_scm) == 'local_git'
15
+ require 'capistrano/bundle_rsync/local_git'
16
+ set :bundle_rsync_local_release_path, repo_url
17
+ Capistrano::BundleRsync::LocalGit.new(self)
18
+ else
19
+ require 'capistrano/bundle_rsync/git'
20
+ Capistrano::BundleRsync::Git.new(self)
18
21
  end
22
+ end
19
23
 
24
+ namespace :bundler do
25
+ task :install do
26
+ bundler.prepare
20
27
  run_locally do
21
- Bundler.with_clean_env do
22
- execute :bundle, "--gemfile #{config.local_release_path}/Gemfile --deployment --quiet --path #{config.local_bundle_path} --without development test --binstubs=#{config.local_bin_path}"
23
- end
24
-
25
- lines = <<-EOS
26
- ---
27
- BUNDLE_FROZEN: '1'
28
- BUNDLE_PATH: #{shared_path.join('bundle')}
29
- BUNDLE_WITHOUT: development:test
30
- BUNDLE_DISABLE_SHARED_GEMS: '1'
31
- BUNDLE_BIN: #{shared_path.join('bin')}
32
- EOS
33
- bundle_config_path = "#{config.local_base_path}/bundle_config"
34
- File.open(bundle_config_path, "w") {|file| file.print(lines) }
35
-
36
- rsync_options = config.rsync_options
37
- Parallel.each(hosts, in_processes: config.max_parallels(hosts)) do |host|
38
- ssh = config.build_ssh_command(host)
39
- if config_files = config.config_files
40
- config_files.each do |config_file|
41
- basename = File.basename(config_file)
42
- execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config_file} #{host}:#{release_path}/config/#{basename}"
43
- end
44
- end
45
-
46
- execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config.local_bundle_path}/ #{host}:#{shared_path}/bundle/"
47
- execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config.local_bin_path}/ #{host}:#{shared_path}/bin/"
48
- execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{bundle_config_path} #{host}:#{release_path}/.bundle/config"
49
- end
50
-
51
- FileUtils.rm_rf(config.local_release_path)
28
+ bundler.install
52
29
  end
53
30
  end
54
31
  end
55
32
 
56
33
  desc 'Check that the repository is reachable'
57
34
  task :check do
58
- fetch(:branch)
59
35
  run_locally do
60
- exit 1 unless execute("git ls-remote #{repo_url}")
61
- execute("mkdir -p #{config.local_base_path}")
36
+ scm.check
62
37
  end
63
38
  end
64
39
 
65
40
  desc 'Clone the repo to the cache'
66
41
  task :clone do
67
42
  run_locally do
68
- if File.exist?("#{config.local_repo_path}/HEAD")
69
- info t(:mirror_exists, at: config.local_repo_path)
70
- else
71
- execute :git, :clone, '--mirror', repo_url, config.local_repo_path
72
- end
43
+ scm.clone
73
44
  end
74
45
  end
75
46
 
76
47
  desc 'Update the repo mirror to reflect the origin state'
77
48
  task update: :'bundle_rsync:clone' do
78
49
  run_locally do
79
- within config.local_repo_path do
80
- execute :git, :remote, :update
81
- end
50
+ scm.update
82
51
  end
83
52
  end
84
53
 
85
54
  desc 'Copy repo to releases'
86
55
  task create_release: :'bundle_rsync:update' do
87
- hosts = roles(:all)
88
56
  run_locally do
89
- execute "mkdir -p #{config.local_release_path}"
90
-
91
- within config.local_repo_path do
92
- execute :git, :archive, fetch(:branch), '| tar -x -C', "#{config.local_release_path}"
93
- end
94
-
95
- rsync_options = config.rsync_options
96
- Parallel.each(hosts, in_processes: config.max_parallels(hosts)) do |host|
97
- ssh = config.build_ssh_command(host)
98
- execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config.local_release_path}/ #{host}:#{release_path}/"
99
- end
57
+ scm.create_release
100
58
  end
101
59
  end
102
60
 
103
61
  desc 'Determine the revision that will be deployed'
104
62
  task :set_current_revision do
105
63
  run_locally do
106
- within config.local_repo_path do
107
- set :current_revision, capture(:git, "rev-parse --short #{fetch(:branch)}")
108
- end
64
+ scm.set_current_revision
109
65
  end
110
66
  end
111
67
 
112
68
  before 'deploy:updated', 'bundle_rsync:bundler:install'
113
69
  end
114
-
115
- namespace :load do
116
- task :defaults do
117
- set :bundle_rsync_local_base_path, nil
118
- set :bundle_rsync_local_repo_path, nil
119
- set :bundle_rsync_local_release_path, nil
120
- set :bundle_rsync_local_bundle_path, nil
121
- set :bundle_rsync_local_bin_path, nil
122
- set :bundle_rsync_config_files, nil
123
- set :bundle_rsync_ssh_options, nil # Default to be ssh_options. Note: :password is not supported.
124
- set :bundle_rsync_max_parallels, nil
125
- end
126
- end
127
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-bundle_rsync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sonots
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-09 00:00:00.000000000 Z
12
+ date: 2014-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
@@ -82,9 +82,19 @@ files:
82
82
  - README.md
83
83
  - Rakefile
84
84
  - capistrano-bundle_rsync.gemspec
85
+ - example/Capfile
86
+ - example/Gemfile
87
+ - example/config/deploy.rb
88
+ - example/config/deploy/local_git.rb
89
+ - example/config/deploy/sample.rb
85
90
  - lib/capistrano-bundle_rsync.rb
86
91
  - lib/capistrano/bundle_rsync.rb
92
+ - lib/capistrano/bundle_rsync/base.rb
93
+ - lib/capistrano/bundle_rsync/bundler.rb
87
94
  - lib/capistrano/bundle_rsync/config.rb
95
+ - lib/capistrano/bundle_rsync/git.rb
96
+ - lib/capistrano/bundle_rsync/local_git.rb
97
+ - lib/capistrano/bundle_rsync/scm.rb
88
98
  - lib/capistrano/tasks/bundle_rsync.rake
89
99
  homepage: https://github.com/sonots/capistrano-bundle_rsync
90
100
  licenses: