cartage-bundler 1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 997b14c2df808a9b253b2fd853d7401e10f89044
4
+ data.tar.gz: cc4f684fc3727992d71340a7eff2b9c6c7895583
5
+ SHA512:
6
+ metadata.gz: ba6256002c294ddabb2abd66b2edefcc0a204bb91888ddd04bee55a1fd45dbfb2e03732fb7b117b9277c4ec5ffb8e61429e730bb5ed260f6cac22e1512af3a13
7
+ data.tar.gz: c214beaa47be87663c74ceb5156f3172d961b63b3855d5292b9ac2a6663e4676806a436b256697109f48d78eafd2f727aa8a7adeb6182f427f6fe0bd15be6848
@@ -0,0 +1,68 @@
1
+ ## Contributing
2
+
3
+ We value any contribution to cartage-bundler you can provide: a bug report, a
4
+ feature request, or code contributions. cartage-bundler is reasonably complex
5
+ code, so there are a few contribution guidelines:
6
+
7
+ * Changes *will not* be accepted without tests. The test suite is written
8
+ with [Minitest][].
9
+ * Match our coding style.
10
+ * Use a thoughtfully-named topic branch that contains your change. Rebase
11
+ your commits into logical chunks as necessary.
12
+ * Use [quality commit messages][].
13
+ * Do not change the version number; when your patch is accepted and a release
14
+ is made, the version will be updated at that point.
15
+ * Submit a GitHub pull request with your changes.
16
+
17
+ ### Test Dependencies
18
+
19
+ cartage-bundler uses Ryan Davis’s [Hoe][] to manage the release process, which
20
+ adds a number of rake tasks. You will mostly be interested in:
21
+
22
+ $ rake
23
+
24
+ which runs the tests the same way that:
25
+
26
+ $ rake test
27
+ $ rake travis
28
+
29
+ will do.
30
+
31
+ To assist with the installation of the development dependencies for
32
+ cartage-bundler, I have provided the simplest possible Gemfile pointing to the
33
+ (generated) `cartage-bundler.gemspec` file. This will permit you to do:
34
+
35
+ $ bundle install
36
+
37
+ to get the development dependencies. If you aleady have `hoe` installed, you
38
+ can accomplish the same thing with:
39
+
40
+ $ rake newb
41
+
42
+ This task will install any missing dependencies, run the tests/specs, and
43
+ generate the RDoc.
44
+
45
+ ### Workflow
46
+
47
+ Here's the most direct way to get your work merged into the project:
48
+
49
+ * Fork the project.
50
+ * Clone down your fork (`git clone
51
+ git://github.com/KineticCafe/cartage-bundler.git`).
52
+ * Create a topic branch to contain your change (`git checkout -b
53
+ my_awesome_feature`).
54
+ * Hack away, add tests. Not necessarily in that order.
55
+ * Make sure everything still passes by running `rake`.
56
+ * If necessary, rebase your commits into logical chunks, without errors.
57
+ * Push the branch up (`git push origin my_awesome_feature`).
58
+ * Create a pull request against KineticCafe/cartage-bundler and describe
59
+ what your change does and the why you think it should be merged.
60
+
61
+ ### Contributors
62
+
63
+ * Austin Ziegler created cartage-bundler.
64
+
65
+ [Minitest]: https://github.com/seattlerb/minitest
66
+ [quality commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
67
+ [Hoe]: https://github.com/seattlerb/hoe
68
+ [kccoc]: https://github.com/KineticCafe/code-of-conduct
@@ -0,0 +1,7 @@
1
+ ### 1.0 / 2016-05-DD
2
+
3
+ * 1 major enhancement
4
+
5
+ * Happy Birthday! cartage-bundler has been created as part of the Cartage
6
+ 2.0 rewrite and represents the abstraction of bundler packaging as a
7
+ proper plug-in.
@@ -0,0 +1,27 @@
1
+ ## Licence
2
+
3
+ This software is available under an MIT-style licence.
4
+
5
+ * Copyright 2016 Kinetic Cafe
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
8
+ this software and associated documentation files (the "Software"), to deal in
9
+ the Software without restriction, including without limitation the rights to
10
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
11
+ of the Software, and to permit persons to whom the Software is furnished to do
12
+ so, subject to the following conditions:
13
+
14
+ * The names of its contributors may not be used to endorse or promote
15
+ products derived from this software without specific prior written
16
+ permission.
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ Contributing.md
2
+ History.md
3
+ Licence.md
4
+ Manifest.txt
5
+ README.rdoc
6
+ Rakefile
7
+ lib/cartage/plugins/bundler.rb
8
+ test/minitest_config.rb
9
+ test/test_cartage_bundler.rb
@@ -0,0 +1,107 @@
1
+ = cartage-bundler by Kinetic Cafe
2
+
3
+ code :: https://github.com/KineticCafe/cartage-bundler/
4
+ issues :: https://github.com/KineticCafe/cartage-bundler/issues
5
+ continuous integration :: {<img src="https://travis-ci.org/KineticCafe/cartage-bundler.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/KineticCafe/cartage-bundler]
6
+
7
+ == Description
8
+
9
+ cartage-bundler is a plug-in for
10
+ {cartage}[https://github.com/KineticCafe/cartage] that uses Ruby
11
+ {Bundler}[http://bundler.io] to install application dependencies into the
12
+ <tt>vendor/bundle</tt> path to allow for clean deployments in environments with
13
+ strict access control rules and without requiring development tools on
14
+ production servers.
15
+
16
+ Cartage provides a repeatable means to create a package for a server-side
17
+ application that can be used in deployment with a configuration tool like
18
+ Ansible, Chef, Puppet, or Salt.
19
+
20
+ == Synopsis & Configuration
21
+
22
+ cartage-bundler is a <tt>:vendor_dependencies</tt> plug-in which will fetch the
23
+ current version of Bundler and perform a <tt>bundle install</tt> if a +Gemfile+
24
+ is found.
25
+
26
+ gem fetch bundler
27
+ bundle install --deployment --clean --jobs=4 --without development test
28
+
29
+ This can be configured in the <tt>plugins.bundler</tt> section of the Cartage
30
+ configuration file.
31
+
32
+ ---
33
+ plugins:
34
+ bundler:
35
+ disabled: false
36
+ gemfile: Gemfile
37
+ jobs: 4
38
+ without_groups:
39
+ - development
40
+ - test
41
+ extra_without_groups: []
42
+
43
+ As with all Cartage plug-ins, cartage-bundler can be disabled explicitly by
44
+ setting +disabled+ to +true+. The other settings are as follows:
45
+
46
+ +gemfile+:: Provides an alternate name and/or path to the Bundler gemfile. The
47
+ +gemfile+ option specifies a path relative to the package work
48
+ path, ending in the name of the gemfile.
49
+
50
+ gemfile: jruby.gemfile
51
+ gemfile: jruby/Gemfile
52
+
53
+ +jobs+:: Provides the number of parallel execution streams.
54
+
55
+ jobs: 2
56
+ jobs: 8
57
+
58
+ +without_groups+:: An array of the gem groups that should be *excluded* from
59
+ installation. If not provided, excludes the +development+
60
+ and +test+ groups. Provide an empty array to include all
61
+ groups. A specified array for +without_groups+ *replaces*
62
+ the default array, so the *default* groups must be provided
63
+ in addition to the *new* groups when using this
64
+ configuration option.
65
+
66
+ without_groups: [] # All groups will be installed.
67
+ without_groups: # All groups except development, test, and assets.
68
+ - development
69
+ - test
70
+ - assets
71
+
72
+ +extra_without_groups+:: An array of *additional* gem groups that should be
73
+ *excluded* from installation. This adds to the default
74
+ list of +without_groups+ (groups +development+ and
75
+ +test+).
76
+
77
+ # All groups except development, test, and assets.
78
+ extra_without_groups:
79
+ - assets
80
+
81
+ == Install
82
+
83
+ Add cartage-bundler to your Gemfile:
84
+
85
+ gem 'cartage-bundler', '~> 1.0'
86
+
87
+ Or manually install:
88
+
89
+ % gem install cartage-bundler
90
+
91
+ == cartage-bundler Semantic Versioning
92
+
93
+ cartage-bundler uses a {Semantic Versioning}[http://semver.org/] scheme with one
94
+ change:
95
+
96
+ * When PATCH is zero (+0+), it will be omitted from version references.
97
+
98
+ cartage-bundler will generally track cartage for major versions to ensure plugin API
99
+ compatibility.
100
+
101
+ == Community and Contributing
102
+
103
+ cartage-bundler welcomes your contributions as described in
104
+ {Contributing.md}[https://github.com/KineticCafe/cartage-bundler/blob/master/Contributing.md].
105
+ This project, like all Kinetic Cafe {open source
106
+ projects}[https://github.com/KineticCafe], is under the Kinetic Cafe Open
107
+ Source {Code of Conduct}[https://github.com/KineticCafe/code-of-conduct].
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require 'rake/clean'
6
+
7
+ Hoe.plugin :doofus
8
+ Hoe.plugin :email unless ENV['CI'] || ENV['TRAVIS']
9
+ Hoe.plugin :gemspec2
10
+ Hoe.plugin :git
11
+ Hoe.plugin :minitest
12
+ Hoe.plugin :rubygems
13
+ Hoe.plugin :travis
14
+
15
+ spec = Hoe.spec 'cartage-bundler' do
16
+ developer('Austin Ziegler', 'aziegler@kineticcafe.com')
17
+
18
+ self.history_file = 'History.md'
19
+ self.readme_file = 'README.rdoc'
20
+
21
+ license 'MIT'
22
+
23
+ ruby20!
24
+
25
+ extra_deps << ['cartage', '~> 2.0.rc1']
26
+ extra_deps << ['bundler', '~> 1.0']
27
+
28
+ extra_dev_deps << ['rake', '>= 10.0']
29
+ extra_dev_deps << ['rdoc', '~> 4.2']
30
+ extra_dev_deps << ['hoe-doofus', '~> 1.0']
31
+ extra_dev_deps << ['hoe-gemspec2', '~> 1.1']
32
+ extra_dev_deps << ['hoe-git', '~> 1.5']
33
+ extra_dev_deps << ['hoe-travis', '~> 1.2']
34
+ extra_dev_deps << ['minitest', '~> 5.4']
35
+ extra_dev_deps << ['minitest-autotest', '~> 1.0']
36
+ extra_dev_deps << ['minitest-bisect', '~> 1.2']
37
+ extra_dev_deps << ['minitest-bonus-assertions', '~> 2.0']
38
+ extra_dev_deps << ['minitest-focus', '~> 1.1']
39
+ extra_dev_deps << ['minitest-moar', '~> 0.0']
40
+ extra_dev_deps << ['minitest-pretty_diff', '~> 0.1']
41
+ extra_dev_deps << ['simplecov', '~> 0.7']
42
+ end
43
+
44
+ ENV['RUBYOPT'] = '-W0'
45
+
46
+ module Hoe::Publish #:nodoc:
47
+ alias __make_rdoc_cmd__cartage__ make_rdoc_cmd
48
+
49
+ def make_rdoc_cmd(*extra_args) # :nodoc:
50
+ spec.extra_rdoc_files.delete_if { |f| f == 'Manifest.txt' }
51
+ __make_rdoc_cmd__cartage__(*extra_args)
52
+ end
53
+ end
54
+
55
+ namespace :test do
56
+ if File.exist?('.simplecov-prelude.rb')
57
+ task :coverage do
58
+ spec.test_prelude = 'load ".simplecov-prelude.rb"'
59
+
60
+ Rake::Task['test'].execute
61
+ end
62
+ end
63
+
64
+ CLOBBER << 'coverage'
65
+ end
66
+
67
+ CLOBBER << 'tmp'
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cartage/plugin'
4
+ require 'bundler'
5
+
6
+ # Cartage, a reliable package builder.
7
+ class Cartage
8
+ end
9
+
10
+ # Cartage::Bundler is a +:vendor_dependencies+ plug-in for Cartage.
11
+ #
12
+ # It supports the following configuration options in +plugins.bundler+:
13
+ #
14
+ # +disabled+:: Whether Cartage::Bundler is disnabled. In addition to explicitly
15
+ # disabling Cartage::Bundler, it will disable itself if the
16
+ # Gemfile does not exist.
17
+ # +gemfile+:: Provides an alternate name and/or path to the Bundler gemfile.
18
+ # The +gemfile+ option specifies a path relative to the package
19
+ # work path, ending in the name of the gemfile.
20
+ #
21
+ # gemfile: jruby.gemfile
22
+ # gemfile: jruby/Gemfile
23
+ #
24
+ # +jobs+:: Provides the number of parallel execution streams.
25
+ #
26
+ # jobs: 2
27
+ # jobs: 8
28
+ #
29
+ # +without_groups+:: An array of the gem groups that should be *excluded* from
30
+ # installation. If not provided, excludes the +development+
31
+ # and +test+ groups. Provide an empty array to include all
32
+ # groups. A specified array for +without_groups+ *replaces*
33
+ # the default array, so the *default* groups must be
34
+ # provided in addition to the *new* groups when using this
35
+ # configuration option.
36
+ #
37
+ # without_groups: [] # All groups will be installed.
38
+ # # All groups except development, test, and assets.
39
+ # without_groups:
40
+ # - development
41
+ # - test
42
+ # - assets
43
+ #
44
+ # +extra_without_groups+:: An array of *additional* gem groups that should be
45
+ # *excluded* from installation. This adds to the
46
+ # default list of +without_groups+ (groups
47
+ # +development+ and +test+).
48
+ #
49
+ # # All groups except development, test, and assets.
50
+ # extra_without_groups:
51
+ # - assets
52
+ class Cartage::Bundler < Cartage::Plugin
53
+ VERSION = '1.0.rc1' # :nodoc:
54
+
55
+ # Cartage::Bundler is only enabled if the Gemfile exists.
56
+ def disabled?
57
+ super || !gemfile.exist?
58
+ end
59
+
60
+ # <tt>:vendor_dependencies#vendor_dependencies</tt> performs the steps
61
+ # required to vendor the dependencies introduced by Bundler.
62
+ def vendor_dependencies
63
+ fetch_bundler
64
+ bundle_install
65
+ end
66
+
67
+ # <tt>:vendor_dependencies#path</tt> returns the location or locations where
68
+ # Bundler vendors its dependencies. This release of Cartage::Bundler only
69
+ # supports the default location (+vendor/bundle+).
70
+ def path
71
+ 'vendor/bundle'
72
+ end
73
+
74
+ private
75
+
76
+ attr_reader :gemfile, :jobs, :without_groups
77
+
78
+ def resolve_plugin_config!(config)
79
+ @gemfile = cartage.work_path.join(config.gemfile || 'Gemfile').expand_path
80
+ @jobs = config.jobs || 4
81
+ @without_groups = Array(config.without_groups || %w(development test))
82
+ @without_groups += Array(config.extra_without_groups) if config.extra_without_groups
83
+
84
+ if config.gemfile && config.gemfile != 'Gemfile'
85
+ bundle_command << "--gemfile=#{gemfile}"
86
+ end
87
+
88
+ return if without_groups.empty?
89
+ bundle_command.push('--without', *without_groups)
90
+ end
91
+
92
+ def fetch_bundler
93
+ Dir.chdir(cartage.work_path) do
94
+ cartage.run %w(gem fetch bundler)
95
+ end
96
+ end
97
+
98
+ def bundle_install
99
+ Bundler.with_clean_env do
100
+ Dir.chdir(cartage.work_path) do
101
+ cartage.run bundle_command
102
+ end
103
+ end
104
+ end
105
+
106
+ def bundle_command
107
+ @bundle_command ||= [
108
+ 'bundle', 'install',
109
+ '--deployment',
110
+ '--clean',
111
+ "--jobs=#{jobs}"
112
+ ]
113
+ end
114
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ gem 'minitest'
4
+ require 'minitest/autorun'
5
+ require 'minitest/pretty_diff'
6
+ require 'minitest/focus'
7
+ require 'minitest/moar'
8
+ require 'minitest/bisect'
9
+ require 'minitest-bonus-assertions'
10
+ require 'cartage/minitest'
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest_config'
4
+
5
+ describe 'Cartage::Bundler' do
6
+ let(:config) {
7
+ Cartage::Config.new(
8
+ root_path: '/a/b/c',
9
+ name: 'test',
10
+ timestamp: 'value',
11
+ plugins: { bundler: {} }
12
+ )
13
+ }
14
+ let(:cartage) {
15
+ Cartage.new(config)
16
+ }
17
+ let(:subject) { cartage.bundler }
18
+
19
+ it 'is disabled if the Gemfile does not exist' do
20
+ instance_stub Pathname, :exist?, -> { false } do
21
+ assert_true subject.disabled?
22
+ end
23
+ end
24
+
25
+ describe '#vendor_dependencies' do
26
+ it 'downloads bundler' do
27
+ # This isn't unsafe here, but we aren't testing it.
28
+ disable_unsafe_method subject, :bundle_install
29
+
30
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
31
+ stub_cartage_run %w(gem fetch bundler) do
32
+ subject.vendor_dependencies
33
+ end
34
+ end
35
+ end
36
+
37
+ describe 'runs bundle install' do
38
+ def bundle_command(jobs: 4, without: %w(development test), gemfile: nil)
39
+ %W(bundle install --deployment --clean --jobs=#{jobs}).tap do |command|
40
+ command.push("--gemfile=#{gemfile}") if gemfile
41
+ command.push('--without', *without) unless without.empty?
42
+ end
43
+ end
44
+
45
+ it 'with default parameters' do
46
+ disable_unsafe_method subject, :fetch_bundler
47
+
48
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
49
+ stub_cartage_run bundle_command do
50
+ subject.vendor_dependencies
51
+ end
52
+ end
53
+ end
54
+
55
+ it 'with jobs=2' do
56
+ config.plugins.bundler.jobs = 2
57
+ disable_unsafe_method subject, :fetch_bundler
58
+
59
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
60
+ stub_cartage_run bundle_command jobs: 2 do
61
+ subject.vendor_dependencies
62
+ end
63
+ end
64
+ end
65
+
66
+ it 'with gemfile=jruby/Gemfile' do
67
+ config.plugins.bundler.gemfile = 'jruby/Gemfile'
68
+ disable_unsafe_method subject, :fetch_bundler
69
+
70
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
71
+ stub_cartage_run bundle_command gemfile: '/a/b/c/tmp/test/jruby/Gemfile' do
72
+ subject.vendor_dependencies
73
+ end
74
+ end
75
+ end
76
+
77
+ it 'with no exclusions' do
78
+ config.plugins.bundler.without_groups = []
79
+ disable_unsafe_method subject, :fetch_bundler
80
+
81
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
82
+ stub_cartage_run bundle_command without: [] do
83
+ subject.vendor_dependencies
84
+ end
85
+ end
86
+ end
87
+
88
+ it 'with replaced exclusions' do
89
+ config.plugins.bundler.without_groups = 'replaced'
90
+ disable_unsafe_method subject, :fetch_bundler
91
+
92
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
93
+ stub_cartage_run bundle_command without: [ 'replaced' ] do
94
+ subject.vendor_dependencies
95
+ end
96
+ end
97
+ end
98
+
99
+ it 'with extra exclusions' do
100
+ config.plugins.bundler.extra_without_groups = [ 'extra' ]
101
+ disable_unsafe_method subject, :fetch_bundler
102
+
103
+ stub_dir_chdir Pathname('/a/b/c/tmp/test') do
104
+ stub_cartage_run bundle_command without: %w(development test extra) do
105
+ subject.vendor_dependencies
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ it "#path returns 'vendor/bundle'" do
113
+ assert_equal 'vendor/bundle', subject.path
114
+ end
115
+
116
+ it 'is returned when :vendor_dependencies is requested' do
117
+ instance_stub Cartage::Bundler, :enabled?, -> { true } do
118
+ assert_equal [ subject ], cartage.plugins.send(:offering, :vendor_dependencies)
119
+ end
120
+ end
121
+ end
metadata ADDED
@@ -0,0 +1,312 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cartage-bundler
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Austin Ziegler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cartage
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.rc1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.rc1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: hoe-doofus
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hoe-gemspec2
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: hoe-git
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: hoe-travis
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.2'
139
+ - !ruby/object:Gem::Dependency
140
+ name: minitest-autotest
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: minitest-bisect
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.2'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: minitest-bonus-assertions
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '2.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: minitest-focus
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '1.1'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.1'
195
+ - !ruby/object:Gem::Dependency
196
+ name: minitest-moar
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: minitest-pretty_diff
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.1'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.1'
223
+ - !ruby/object:Gem::Dependency
224
+ name: simplecov
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '0.7'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '0.7'
237
+ - !ruby/object:Gem::Dependency
238
+ name: hoe
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '3.15'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '3.15'
251
+ description: |-
252
+ cartage-bundler is a plug-in for
253
+ {cartage}[https://github.com/KineticCafe/cartage] that uses Ruby
254
+ {Bundler}[http://bundler.io] to install application dependencies into the
255
+ <tt>vendor/bundle</tt> path to allow for clean deployments in environments with
256
+ strict access control rules and without requiring development tools on
257
+ production servers.
258
+
259
+ Cartage provides a repeatable means to create a package for a server-side
260
+ application that can be used in deployment with a configuration tool like
261
+ Ansible, Chef, Puppet, or Salt.
262
+ email:
263
+ - aziegler@kineticcafe.com
264
+ executables: []
265
+ extensions: []
266
+ extra_rdoc_files:
267
+ - Contributing.md
268
+ - History.md
269
+ - Licence.md
270
+ - Manifest.txt
271
+ - README.rdoc
272
+ files:
273
+ - Contributing.md
274
+ - History.md
275
+ - Licence.md
276
+ - Manifest.txt
277
+ - README.rdoc
278
+ - Rakefile
279
+ - lib/cartage/plugins/bundler.rb
280
+ - test/minitest_config.rb
281
+ - test/test_cartage_bundler.rb
282
+ homepage: https://github.com/KineticCafe/cartage-bundler/
283
+ licenses:
284
+ - MIT
285
+ metadata: {}
286
+ post_install_message:
287
+ rdoc_options:
288
+ - "--main"
289
+ - README.rdoc
290
+ require_paths:
291
+ - lib
292
+ required_ruby_version: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - "~>"
295
+ - !ruby/object:Gem::Version
296
+ version: '2.0'
297
+ required_rubygems_version: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - ">"
300
+ - !ruby/object:Gem::Version
301
+ version: 1.3.1
302
+ requirements: []
303
+ rubyforge_project:
304
+ rubygems_version: 2.6.4
305
+ signing_key:
306
+ specification_version: 4
307
+ summary: cartage-bundler is a plug-in for {cartage}[https://github.com/KineticCafe/cartage]
308
+ that uses Ruby {Bundler}[http://bundler.io] to install application dependencies
309
+ into the <tt>vendor/bundle</tt> path to allow for clean deployments in environments
310
+ with strict access control rules and without requiring development tools on production
311
+ servers
312
+ test_files: []