capistrano-bundler 1.2.0 → 2.0.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
- SHA1:
3
- metadata.gz: dad2fda55a7ff2ba45994bdb2006b580c6eb02b9
4
- data.tar.gz: 59d5e76aa5c93e97ef4099c0cb88197851267869
2
+ SHA256:
3
+ metadata.gz: b2afb67a369b2e8390dc9dc5d0459717d4b6e16f7ad8d6d635e308f39a6eee1f
4
+ data.tar.gz: ab6c306e5791441f65077bd3c5b8e5404e39544c85b5f39d25d206d786ffd3c1
5
5
  SHA512:
6
- metadata.gz: f34798db9356c5c5ea4665c20bc297a9c6a373bd3277a2051543bf855e84e032a98db11f202b0b036d44e7dccc65a4f46d660eed2acdee9ea683a5188129780a
7
- data.tar.gz: fdc68e85d87d94b2a7d1a281c5cbc5978f3e4d69459ab326bcfd852bf5c7f8019e04fe69d9f734d1d65cdeb75b7d3f4fe4fc24571dd0f00dfbfeb0c7b40e8c7c
6
+ metadata.gz: 7829207f89b9b04b6f9ef37771615c5ef1f1e6152cf0b840f9f9bc2084eebc287f90aaa6c116d3e44b3deed0fbd5d21427a7206c67a20608edb21792d3bc8f80
7
+ data.tar.gz: 23ba2692c0004a7627ed580baea167c03770c298030fb3e2bba5b14640660b65219857a10bcc84db07839958ab6367feabf6ea76559926e25131c4f0137d6665
@@ -0,0 +1,17 @@
1
+ name-template: "$NEXT_PATCH_VERSION"
2
+ tag-template: "v$NEXT_PATCH_VERSION"
3
+ categories:
4
+ - title: "⚠️ Breaking Changes"
5
+ label: "⚠️ Breaking"
6
+ - title: "✨ New Features"
7
+ label: "✨ Feature"
8
+ - title: "🐛 Bug Fixes"
9
+ label: "🐛 Bug Fix"
10
+ - title: "📚 Documentation"
11
+ label: "📚 Docs"
12
+ - title: "🏠 Housekeeping"
13
+ label: "🏠 Housekeeping"
14
+ change-template: "- $TITLE (#$NUMBER) @$AUTHOR"
15
+ no-changes-template: "- No changes"
16
+ template: |
17
+ $CHANGES
@@ -0,0 +1,14 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ update_release_draft:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: release-drafter/release-drafter@v5
13
+ env:
14
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  *.gem
2
+ Gemfile.lock
@@ -0,0 +1,9 @@
1
+ ---
2
+ language: ruby
3
+ cache: bundler
4
+ branches:
5
+ only:
6
+ - master
7
+ rvm:
8
+ - 2.7.1
9
+ script: bundle exec danger
@@ -1,45 +1 @@
1
- # [Unreleased][] (master)
2
-
3
- * Your contribution here!
4
-
5
- # [1.2.0][] (1 Oct 2016)
6
-
7
- * Added a `bundle clean` task. There are no default hooks for it.
8
- * Use `bundle check` to check if we can skip `bundle install`
9
- * Run `bundle:install` on rollback (`deploy:reverted`)
10
- * You can now `require "capistrano/bundler/tasks"` to load the tasks only without the hooks
11
-
12
- # 1.1.4 (22 Jan 2015)
13
-
14
- * Don’t generate binstubs by default (#61)
15
-
16
- # 1.1.3 (4 Aug 2014)
17
-
18
- * Honor `:no_release` flag by using `release_roles` in Capistrano 3.1
19
- * capistrano-bundler now requires Capistrano 3.1 or higher (~> 3.1)
20
- * Added `:bundle_jobs` option for specifying number of parallel jobs
21
-
22
- # 1.1.2 (8 Feb 2014)
23
-
24
- * Added `bundle_env_variables` option for specifying environment variables that should be set when running `bundle`.
25
- * The `bundle_dir` option is now named `bundle_path`
26
- * Use `bundle install` instead of `bundle`
27
- * All options are now optional and can be excluded from the final bundle command by setting them to `nil`
28
- * Bundler looks for a `Gemfile` by default, so there is no need to specify it.
29
-
30
- # 1.1.1
31
-
32
- * ruby is not prefixed with `bundle exec` anymore by default
33
- * prefix rails with `bundle exec` by default
34
-
35
- # 1.1.0
36
-
37
- * Switching to new command map (https://github.com/capistrano/sshkit/pull/45)
38
- Thanks to new command map, now this integration adds `bundle exec` to global executables (gem, ruby, rake). The list of executable can be tweaked by `bundle_bins`.
39
-
40
- # 1.0.0
41
-
42
- Initial release
43
-
44
- [Unreleased]: https://github.com/capistrano/bundler/compare/v1.2.0...HEAD
45
- [1.2.0]: https://github.com/capistrano/bundler/compare/v1.1.4...v1.2.0
1
+ Release notes for this project are kept here: https://github.com/capistrano/bundler/releases
@@ -0,0 +1 @@
1
+ danger.import_dangerfile(github: "capistrano/danger", branch: "no-changelog")
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Capistrano, your one stop deployment shop.
3
+ Copyright (c) 2020 Capistrano, your one stop deployment shop.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
data/README.md CHANGED
@@ -10,11 +10,11 @@ It also prefixes certain binaries to use `bundle exec`.
10
10
 
11
11
  ## Installation
12
12
 
13
- Add these lines to your application's Gemfile:
13
+ Add these lines to your application's Gemfile **[Recommended]**:
14
14
 
15
15
  ```ruby
16
- gem 'capistrano', '~> 3.1'
17
- gem 'capistrano-bundler', '~> 1.1.2'
16
+ gem 'capistrano', '~> 3.6'
17
+ gem 'capistrano-bundler', '~> 2.0'
18
18
  ```
19
19
 
20
20
  And then execute:
@@ -37,11 +37,33 @@ Require in `Capfile` to use the default task:
37
37
  require 'capistrano/bundler'
38
38
  ```
39
39
 
40
- The task will run before `deploy:updated` as part of Capistrano's default deploy, or can be run in isolation with `cap production bundler:install`
40
+ The task will run before `deploy:updated` as part of Capistrano's default deploy, or can be run in isolation with `cap production bundler:install`.
41
+
42
+ In order for Bundler to work efficiently on the server, its project configuration directory (`<release_path>/.bundle/`) should be persistent across releases.
43
+ You need to add it to the `linked_dirs` Capistrano variable:
44
+
45
+ Capistrano **3.5**+:
46
+
47
+ ```ruby
48
+ # config/deploy.rb
49
+
50
+ append :linked_dirs, '.bundle'
51
+ ```
52
+
53
+ Capistrano < 3.5:
54
+
55
+ ```ruby
56
+ # config/deploy.rb
57
+
58
+ set :linked_dirs, fetch(:linked_dirs, []) << '.bundle'
59
+ ```
60
+
61
+ It will still work fine with non-persistent configuration directory, but then it will have to re-resolve all gems on each deploy.
41
62
 
42
63
  By default, the plugin adds `bundle exec` prefix to common executables listed in `bundle_bins` option. This currently applies for `gem`, `rake` and `rails`.
43
64
 
44
65
  You can add any custom executable to this list:
66
+
45
67
  ```ruby
46
68
  set :bundle_bins, fetch(:bundle_bins, []).push('my_new_binary')
47
69
  ```
@@ -50,21 +72,23 @@ Configurable options:
50
72
 
51
73
  ```ruby
52
74
  set :bundle_roles, :all # this is default
75
+ set :bundle_config, { deployment: true } # this is default
53
76
  set :bundle_servers, -> { release_roles(fetch(:bundle_roles)) } # this is default
54
77
  set :bundle_binstubs, -> { shared_path.join('bin') } # default: nil
55
78
  set :bundle_gemfile, -> { release_path.join('MyGemfile') } # default: nil
56
- set :bundle_path, -> { shared_path.join('bundle') } # this is default. set it to nil for skipping the --path flag.
79
+ set :bundle_path, -> { shared_path.join('bundle') } # this is default. set it to nil to use bundler's default path
57
80
  set :bundle_without, %w{development test}.join(' ') # this is default
58
- set :bundle_flags, '--deployment --quiet' # this is default
81
+ set :bundle_flags, '--quiet' # this is default
59
82
  set :bundle_env_variables, {} # this is default
60
83
  set :bundle_clean_options, "" # this is default. Use "--dry-run" if you just want to know what gems would be deleted, without actually deleting them
84
+ set :bundle_check_before_install, true # default: true. Set this to false to bypass running `bundle check` before executing `bundle install`
61
85
  ```
62
86
 
63
87
  You can parallelize the installation of gems with bundler's jobs feature.
64
88
  Choose a number less or equal than the number of cores your server.
65
89
 
66
90
  ```ruby
67
- set :bundle_jobs, 4 # default: nil, only available for Bundler >= 1.4
91
+ set :bundle_jobs, 8 # default: 4, only available for Bundler >= 1.4
68
92
  ```
69
93
 
70
94
  To generate binstubs on each deploy, set `:bundle_binstubs` path:
@@ -73,19 +97,18 @@ To generate binstubs on each deploy, set `:bundle_binstubs` path:
73
97
  set :bundle_binstubs, -> { shared_path.join('bin') }
74
98
  ```
75
99
 
76
- In the result this would execute the following bundle command on all servers
100
+ In the result this would execute the following bundle commands on all servers
77
101
  (actual paths depend on the real deploy directory):
78
102
 
79
103
  ```sh
80
- $ bundle install \
81
- --binstubs /my_app/shared/bin \
82
- --gemfile /my_app/releases/20130623094732/MyGemfile \
83
- --path /my_app/shared/bundle \
84
- --without development test \
85
- --deployment --quiet
104
+ $ bundle config --local deployment true
105
+ $ bundle config --local gemfile /my_app/releases/20130623094732/MyGemfile
106
+ $ bundle config --local path /my_app/shared/bundle
107
+ $ bundle config --local without "development test"
108
+ $ bundle install --quiet --binstubs /my_app/shared/bin
86
109
  ```
87
110
 
88
- If any option is set to `nil` it will be excluded from the final bundle command.
111
+ If any option is set to `nil` it will be excluded from the final bundle commands.
89
112
 
90
113
  If you want to clean up gems after a successful deploy, add `after 'deploy:published', 'bundler:clean'` to config/deploy.rb.
91
114
 
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ # Do nothing by default
4
+ task :default
5
+
6
+ Rake::Task["release"].enhance do
7
+ puts "Don't forget to publish the release on GitHub!"
8
+ system "open https://github.com/capistrano/bundler/releases"
9
+ end
@@ -4,13 +4,16 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'capistrano-bundler'
7
- spec.version = '1.2.0'
7
+ spec.version = '2.0.0'
8
+ spec.license = 'MIT'
8
9
  spec.authors = ['Tom Clements', 'Lee Hambley', 'Kir Shatrov']
9
10
  spec.email = ['seenmyfate@gmail.com', 'lee.hambley@gmail.com', 'shatrov@me.com']
10
11
  spec.description = %q{Bundler support for Capistrano 3.x}
11
12
  spec.summary = %q{Bundler support for Capistrano 3.x}
12
13
  spec.homepage = 'https://github.com/capistrano/bundler'
13
- spec.license = 'MIT'
14
+ spec.metadata = {
15
+ "changelog_uri" => "https://github.com/capistrano/bundler/releases"
16
+ }
14
17
 
15
18
  spec.files = `git ls-files`.split($/)
16
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -18,8 +21,8 @@ Gem::Specification.new do |spec|
18
21
  spec.require_paths = ['lib']
19
22
 
20
23
  spec.add_dependency 'capistrano', '~> 3.1'
21
- spec.add_dependency 'sshkit', '~> 1.2'
22
24
 
23
- spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'bundler', '~> 2.1'
26
+ spec.add_development_dependency 'danger'
24
27
  spec.add_development_dependency 'rake'
25
28
  end
@@ -1,9 +1,39 @@
1
+ require "shellwords"
2
+
1
3
  namespace :bundler do
2
4
  desc <<-DESC
3
- Install the current Bundler environment. By default, gems will be \
4
- installed to the shared/bundle path. Gems in the development and \
5
- test group will not be installed. The install command is executed \
6
- with the --deployment and --quiet flags.
5
+ Configure the Bundler environment for the release so that subequent
6
+ `bundle check`, `bundle install`, `bundle clean`, and `bundle exec`
7
+ commands all behave consistently. The following settings will be
8
+ turned into the appropriate `bundle config` executions:
9
+
10
+ :bundle_config
11
+ :bundle_gemfile
12
+ :bundle_path
13
+ :bundle_without
14
+ DESC
15
+ task :config do
16
+ on fetch(:bundle_servers) do
17
+ within release_path do
18
+ with fetch(:bundle_env_variables) do
19
+ configuration = fetch(:bundle_config).dup || {}
20
+ configuration[:gemfile] = fetch(:bundle_gemfile)
21
+ configuration[:path] = fetch(:bundle_path)
22
+ configuration[:without] = fetch(:bundle_without)
23
+
24
+ configuration.each do |key, value|
25
+ execute :bundle, "config", "--local", key, value.to_s.shellescape unless value.nil?
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ desc <<-DESC
33
+ Install the current Bundler environment. By default, gems will be
34
+ installed to the shared/bundle path. Gems in the development and
35
+ test group will not be installed. The install command is executed
36
+ with the --quiet and --jobs=4 flags.
7
37
 
8
38
  By default, bundler will not be run on servers with no_release: true.
9
39
 
@@ -11,27 +41,27 @@ namespace :bundler do
11
41
 
12
42
  set :bundle_roles, :all
13
43
 
44
+ set :bundle_config, { deployment: true }
14
45
  set :bundle_servers, -> { release_roles(fetch(:bundle_roles)) }
15
- set :bundle_binstubs, -> { shared_path.join('bin') }
46
+ set :bundle_binstubs, nil
16
47
  set :bundle_gemfile, -> { release_path.join('Gemfile') }
17
48
  set :bundle_path, -> { shared_path.join('bundle') }
18
49
  set :bundle_without, %w{development test}.join(' ')
19
- set :bundle_flags, '--deployment --quiet'
20
- set :bundle_jobs, nil
50
+ set :bundle_flags, '--quiet'
51
+ set :bundle_jobs, 4
21
52
  set :bundle_env_variables, {}
22
53
  set :bundle_clean_options, ""
23
54
  DESC
24
- task :install do
55
+ task install: :config do
25
56
  on fetch(:bundle_servers) do
26
57
  within release_path do
27
- with fetch(:bundle_env_variables, {}) do
28
- options = []
29
- options << "--gemfile #{fetch(:bundle_gemfile)}" if fetch(:bundle_gemfile)
30
- options << "--path #{fetch(:bundle_path)}" if fetch(:bundle_path)
31
- unless test(:bundle, :check, *options)
58
+ with fetch(:bundle_env_variables) do
59
+ if fetch(:bundle_check_before_install) && test(:bundle, :check)
60
+ info "The Gemfile's dependencies are satisfied, skipping installation"
61
+ else
62
+ options = []
32
63
  options << "--binstubs #{fetch(:bundle_binstubs)}" if fetch(:bundle_binstubs)
33
64
  options << "--jobs #{fetch(:bundle_jobs)}" if fetch(:bundle_jobs)
34
- options << "--without #{fetch(:bundle_without)}" if fetch(:bundle_without)
35
65
  options << "#{fetch(:bundle_flags)}" if fetch(:bundle_flags)
36
66
  execute :bundle, :install, *options
37
67
  end
@@ -52,12 +82,12 @@ namespace :bundler do
52
82
  end
53
83
  end
54
84
 
55
- desc "Remove unused gems intalled by bundler"
56
- task :clean do
85
+ desc "Remove unused gems installed by bundler"
86
+ task clean: :config do
57
87
  on fetch(:bundle_servers) do
58
88
  within release_path do
59
- with fetch(:bundle_env_variables, {}) do
60
- execute :bundle, :clean, fetch(:bundle_clean_options, "")
89
+ with fetch(:bundle_env_variables) do
90
+ execute :bundle, :clean, fetch(:bundle_clean_options)
61
91
  end
62
92
  end
63
93
  end
@@ -73,9 +103,17 @@ namespace :load do
73
103
  set :bundle_bins, %w{gem rake rails}
74
104
 
75
105
  set :bundle_roles, :all
106
+
107
+ set :bundle_config, { deployment: true }
76
108
  set :bundle_servers, -> { release_roles(fetch(:bundle_roles)) }
109
+ set :bundle_binstubs, nil
110
+ set :bundle_gemfile, nil
77
111
  set :bundle_path, -> { shared_path.join('bundle') }
78
112
  set :bundle_without, %w{development test}.join(' ')
79
- set :bundle_flags, '--deployment --quiet'
113
+ set :bundle_flags, '--quiet'
114
+ set :bundle_jobs, 4
115
+ set :bundle_env_variables, {}
116
+ set :bundle_clean_options, ""
117
+ set :bundle_check_before_install, true
80
118
  end
81
119
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Clements
8
8
  - Lee Hambley
9
9
  - Kir Shatrov
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-10-01 00:00:00.000000000 Z
13
+ date: 2020-07-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capistrano
@@ -27,33 +27,33 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.1'
29
29
  - !ruby/object:Gem::Dependency
30
- name: sshkit
30
+ name: bundler
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '1.2'
36
- type: :runtime
35
+ version: '2.1'
36
+ type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '1.2'
42
+ version: '2.1'
43
43
  - !ruby/object:Gem::Dependency
44
- name: bundler
44
+ name: danger
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '1.3'
49
+ version: '0'
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - "~>"
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: '1.3'
56
+ version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: rake
59
59
  requirement: !ruby/object:Gem::Requirement
@@ -77,8 +77,12 @@ executables: []
77
77
  extensions: []
78
78
  extra_rdoc_files: []
79
79
  files:
80
+ - ".github/release-drafter.yml"
81
+ - ".github/workflows/push.yml"
80
82
  - ".gitignore"
83
+ - ".travis.yml"
81
84
  - CHANGELOG.md
85
+ - Dangerfile
82
86
  - Gemfile
83
87
  - LICENSE
84
88
  - README.md
@@ -93,8 +97,9 @@ files:
93
97
  homepage: https://github.com/capistrano/bundler
94
98
  licenses:
95
99
  - MIT
96
- metadata: {}
97
- post_install_message:
100
+ metadata:
101
+ changelog_uri: https://github.com/capistrano/bundler/releases
102
+ post_install_message:
98
103
  rdoc_options: []
99
104
  require_paths:
100
105
  - lib
@@ -109,9 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
114
  - !ruby/object:Gem::Version
110
115
  version: '0'
111
116
  requirements: []
112
- rubyforge_project:
113
- rubygems_version: 2.6.6
114
- signing_key:
117
+ rubygems_version: 3.1.4
118
+ signing_key:
115
119
  specification_version: 4
116
120
  summary: Bundler support for Capistrano 3.x
117
121
  test_files: []