capistrano-bundle_rsync 0.1.1 → 0.2.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.
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: