Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

Commit

Permalink
Normalize "bundle cache" vs "bundle package"
Browse files Browse the repository at this point in the history
Use the preferred `bundle cache` everywhere, but leave package as an
alias.

Remove duplicated tests.
  • Loading branch information
deivid-rodriguez committed Oct 20, 2019
1 parent c15f4a6 commit cb06ff7
Show file tree
Hide file tree
Showing 20 changed files with 420 additions and 430 deletions.
20 changes: 9 additions & 11 deletions lib/bundler/cli.rb
Expand Up @@ -68,9 +68,7 @@ def cli_help
version
Bundler.ui.info "\n"

primary_commands = ["install", "update",
Bundler.feature_flag.bundler_3_mode? ? "cache" : "package",
"exec", "config", "help"]
primary_commands = ["install", "update", "cache", "exec", "config", "help"]

list = self.class.printable_commands(true)
by_name = list.group_by {|name, _message| name.match(/^bundle (\w+)/)[1] }
Expand Down Expand Up @@ -412,7 +410,7 @@ def outdated(*gems)
Outdated.new(options, gems).run
end

desc "#{Bundler.feature_flag.bundler_3_mode? ? :cache : :package} [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
desc "cache [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
unless Bundler.feature_flag.cache_all?
method_option "all", :type => :boolean,
:banner => "Include all sources (including path and git)."
Expand All @@ -421,24 +419,24 @@ def outdated(*gems)
method_option "cache-path", :type => :string, :banner =>
"Specify a different cache path than the default (vendor/cache)."
method_option "gemfile", :type => :string, :banner => "Use the specified gemfile instead of Gemfile"
method_option "no-install", :type => :boolean, :banner => "Don't install the gems, only the package."
method_option "no-install", :type => :boolean, :banner => "Don't install the gems, only update the cache."
method_option "no-prune", :type => :boolean, :banner => "Don't remove stale gems from the cache."
method_option "path", :type => :string, :banner =>
"Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
method_option "quiet", :type => :boolean, :banner => "Only output warnings and errors."
method_option "frozen", :type => :boolean, :banner =>
"Do not allow the Gemfile.lock to be updated after this package operation's install"
"Do not allow the Gemfile.lock to be updated after this bundle cache operation's install"
long_desc <<-D
The package command will copy the .gem files for every gem in the bundle into the
The cache command will copy the .gem files for every gem in the bundle into the
directory ./vendor/cache. If you then check that directory into your source
control repository, others who check out your source will be able to install the
bundle without having to download any additional gems.
D
def package
require_relative "cli/package"
Package.new(options).run
def cache
require_relative "cli/cache"
Cache.new(options).run
end
map %w[cache pack] => :package
map %w[package pack] => :cache

desc "exec [OPTIONS]", "Run the command in context of the bundle"
method_option :keep_file_descriptors, :type => :boolean, :default => false
Expand Down
4 changes: 2 additions & 2 deletions lib/bundler/cli/package.rb → lib/bundler/cli/cache.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module Bundler
class CLI::Package
class CLI::Cache
attr_reader :options

def initialize(options)
Expand Down Expand Up @@ -40,7 +40,7 @@ def setup_cache_all

if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
"to package them as well, please pass the --all flag. This will be the default " \
"to cache them as well, please pass the --all flag. This will be the default " \
"on Bundler 3.0."
end
end
Expand Down
16 changes: 8 additions & 8 deletions man/bundle-package.1 → man/bundle-cache.1
@@ -1,25 +1,25 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "BUNDLE\-PACKAGE" "1" "October 2019" "" ""
.TH "BUNDLE\-CACHE" "1" "October 2019" "" ""
.
.SH "NAME"
\fBbundle\-package\fR \- Package your needed \fB\.gem\fR files into your application
\fBbundle\-cache\fR \- Cache your needed \fB\.gem\fR files in your application
.
.SH "SYNOPSIS"
\fBbundle package\fR
\fBbundle cache\fR
.
.SH "DESCRIPTION"
Copy all of the \fB\.gem\fR files needed to run the application into the \fBvendor/cache\fR directory\. In the future, when running [bundle install(1)][bundle\-install], use the gems in the cache in preference to the ones on \fBrubygems\.org\fR\.
.
.SH "GIT AND PATH GEMS"
The \fBbundle package\fR command can also package \fB:git\fR and \fB:path\fR dependencies besides \.gem files\. This needs to be explicitly enabled via the \fB\-\-all\fR option\. Once used, the \fB\-\-all\fR option will be remembered\.
The \fBbundle cache\fR command can also cache \fB:git\fR and \fB:path\fR dependencies besides \.gem files\. This needs to be explicitly enabled via the \fB\-\-all\fR option\. Once used, the \fB\-\-all\fR option will be remembered\.
.
.SH "SUPPORT FOR MULTIPLE PLATFORMS"
When using gems that have different packages for different platforms, Bundler supports caching of gems for other platforms where the Gemfile has been resolved (i\.e\. present in the lockfile) in \fBvendor/cache\fR\. This needs to be enabled via the \fB\-\-all\-platforms\fR option\. This setting will be remembered in your local bundler configuration\.
.
.SH "REMOTE FETCHING"
By default, if you run \fBbundle install(1)\fR](bundle\-install\.1\.html) after running bundle package(1) \fIbundle\-package\.1\.html\fR, bundler will still connect to \fBrubygems\.org\fR to check whether a platform\-specific gem exists for any of the gems in \fBvendor/cache\fR\.
By default, if you run \fBbundle install(1)\fR](bundle\-install\.1\.html) after running bundle cache(1) \fIbundle\-cache\.1\.html\fR, bundler will still connect to \fBrubygems\.org\fR to check whether a platform\-specific gem exists for any of the gems in \fBvendor/cache\fR\.
.
.P
For instance, consider this Gemfile(5):
Expand All @@ -37,7 +37,7 @@ gem "nokogiri"
.IP "" 0
.
.P
If you run \fBbundle package\fR under C Ruby, bundler will retrieve the version of \fBnokogiri\fR for the \fB"ruby"\fR platform\. If you deploy to JRuby and run \fBbundle install\fR, bundler is forced to check to see whether a \fB"java"\fR platformed \fBnokogiri\fR exists\.
If you run \fBbundle cache\fR under C Ruby, bundler will retrieve the version of \fBnokogiri\fR for the \fB"ruby"\fR platform\. If you deploy to JRuby and run \fBbundle install\fR, bundler is forced to check to see whether a \fB"java"\fR platformed \fBnokogiri\fR exists\.
.
.P
Even though the \fBnokogiri\fR gem for the Ruby platform is \fItechnically\fR acceptable on JRuby, it has a C extension that does not run on JRuby\. As a result, bundler will, by default, still connect to \fBrubygems\.org\fR to check whether it has a version of one of your gems more specific to your platform\.
Expand All @@ -49,7 +49,7 @@ This problem is also not limited to the \fB"java"\fR platform\. A similar (commo
If you know for sure that the gems packaged in \fBvendor/cache\fR are appropriate for the platform you are on, you can run \fBbundle install \-\-local\fR to skip checking for more appropriate gems, and use the ones in \fBvendor/cache\fR\.
.
.P
One way to be sure that you have the right platformed versions of all your gems is to run \fBbundle package\fR on an identical machine and check in the gems\. For instance, you can run \fBbundle package\fR on an identical staging box during your staging process, and check in the \fBvendor/cache\fR before deploying to production\.
One way to be sure that you have the right platformed versions of all your gems is to run \fBbundle cache\fR on an identical machine and check in the gems\. For instance, you can run \fBbundle cache\fR on an identical staging box during your staging process, and check in the \fBvendor/cache\fR before deploying to production\.
.
.P
By default, bundle package(1) \fIbundle\-package\.1\.html\fR fetches and also installs the gems to the default location\. To package the dependencies to \fBvendor/cache\fR without installing them to the local install location, you can run \fBbundle package \-\-no\-install\fR\.
By default, bundle cache(1) \fIbundle\-cache\.1\.html\fR fetches and also installs the gems to the default location\. To cache the dependencies to \fBvendor/cache\fR without installing them to the local install location, you can run \fBbundle cache \-\-no\-install\fR\.
36 changes: 18 additions & 18 deletions man/bundle-package.1.txt → man/bundle-cache.1.txt
@@ -1,12 +1,12 @@
BUNDLE-PACKAGE(1) BUNDLE-PACKAGE(1)
BUNDLE-CACHE(1) BUNDLE-CACHE(1)



NAME
bundle-package - Package your needed .gem files into your application
bundle-cache - Cache your needed .gem files in your application

SYNOPSIS
bundle package
bundle cache

DESCRIPTION
Copy all of the .gem files needed to run the application into the ven-
Expand All @@ -15,7 +15,7 @@ DESCRIPTION
the ones on rubygems.org.

GIT AND PATH GEMS
The bundle package command can also package :git and :path dependencies
The bundle cache command can also cache :git and :path dependencies
besides .gem files. This needs to be explicitly enabled via the --all
option. Once used, the --all option will be remembered.

Expand All @@ -28,9 +28,9 @@ SUPPORT FOR MULTIPLE PLATFORMS

REMOTE FETCHING
By default, if you run bundle install(1)](bundle-install.1.html) after
running bundle package(1) bundle-package.1.html, bundler will still
connect to rubygems.org to check whether a platform-specific gem exists
for any of the gems in vendor/cache.
running bundle cache(1) bundle-cache.1.html, bundler will still connect
to rubygems.org to check whether a platform-specific gem exists for any
of the gems in vendor/cache.

For instance, consider this Gemfile(5):

Expand All @@ -42,9 +42,9 @@ REMOTE FETCHING



If you run bundle package under C Ruby, bundler will retrieve the ver-
sion of nokogiri for the "ruby" platform. If you deploy to JRuby and
run bundle install, bundler is forced to check to see whether a "java"
If you run bundle cache under C Ruby, bundler will retrieve the version
of nokogiri for the "ruby" platform. If you deploy to JRuby and run
bundle install, bundler is forced to check to see whether a "java"
platformed nokogiri exists.

Even though the nokogiri gem for the Ruby platform is technically
Expand All @@ -63,16 +63,16 @@ REMOTE FETCHING
dor/cache.

One way to be sure that you have the right platformed versions of all
your gems is to run bundle package on an identical machine and check in
the gems. For instance, you can run bundle package on an identical
staging box during your staging process, and check in the vendor/cache
your gems is to run bundle cache on an identical machine and check in
the gems. For instance, you can run bundle cache on an identical stag-
ing box during your staging process, and check in the vendor/cache
before deploying to production.

By default, bundle package(1) bundle-package.1.html fetches and also
installs the gems to the default location. To package the dependencies
to vendor/cache without installing them to the local install location,
you can run bundle package --no-install.
By default, bundle cache(1) bundle-cache.1.html fetches and also
installs the gems to the default location. To cache the dependencies to
vendor/cache without installing them to the local install location, you
can run bundle cache --no-install.



October 2019 BUNDLE-PACKAGE(1)
October 2019 BUNDLE-CACHE(1)
68 changes: 68 additions & 0 deletions man/bundle-cache.ronn
@@ -0,0 +1,68 @@
bundle-cache(1) -- Cache your needed `.gem` files in your application
===========================================================================

## SYNOPSIS

`bundle cache`

## DESCRIPTION

Copy all of the `.gem` files needed to run the application into the
`vendor/cache` directory. In the future, when running [bundle
install(1)][bundle-install], use the gems in the cache in preference to the ones
on `rubygems.org`.

## GIT AND PATH GEMS

The `bundle cache` command can also cache `:git` and `:path` dependencies
besides .gem files. This needs to be explicitly enabled via the `--all` option.
Once used, the `--all` option will be remembered.

## SUPPORT FOR MULTIPLE PLATFORMS

When using gems that have different packages for different platforms, Bundler
supports caching of gems for other platforms where the Gemfile has been resolved
(i.e. present in the lockfile) in `vendor/cache`. This needs to be enabled via
the `--all-platforms` option. This setting will be remembered in your local
bundler configuration.

## REMOTE FETCHING

By default, if you run `bundle install(1)`](bundle-install.1.html) after running
[bundle cache(1)](bundle-cache.1.html), bundler will still connect to
`rubygems.org` to check whether a platform-specific gem exists for any of the
gems in `vendor/cache`.

For instance, consider this Gemfile(5):

source "https://rubygems.org"

gem "nokogiri"

If you run `bundle cache` under C Ruby, bundler will retrieve the version of
`nokogiri` for the `"ruby"` platform. If you deploy to JRuby and run `bundle
install`, bundler is forced to check to see whether a `"java"` platformed
`nokogiri` exists.

Even though the `nokogiri` gem for the Ruby platform is _technically_ acceptable
on JRuby, it has a C extension that does not run on JRuby. As a result, bundler
will, by default, still connect to `rubygems.org` to check whether it has a
version of one of your gems more specific to your platform.

This problem is also not limited to the `"java"` platform. A similar (common)
problem can happen when developing on Windows and deploying to Linux, or even
when developing on OSX and deploying to Linux.

If you know for sure that the gems packaged in `vendor/cache` are appropriate
for the platform you are on, you can run `bundle install --local` to skip
checking for more appropriate gems, and use the ones in `vendor/cache`.

One way to be sure that you have the right platformed versions of all your gems
is to run `bundle cache` on an identical machine and check in the gems. For
instance, you can run `bundle cache` on an identical staging box during your
staging process, and check in the `vendor/cache` before deploying to production.

By default, [bundle cache(1)](bundle-cache.1.html) fetches and also installs the
gems to the default location. To cache the dependencies to `vendor/cache`
without installing them to the local install location, you can run `bundle cache
--no-install`.
72 changes: 0 additions & 72 deletions man/bundle-package.ronn

This file was deleted.

4 changes: 2 additions & 2 deletions man/bundle.1
Expand Up @@ -43,8 +43,8 @@ Install the gems specified by the \fBGemfile\fR or \fBGemfile\.lock\fR
Update dependencies to their latest versions
.
.TP
\fBbundle package(1)\fR \fIbundle\-package\.1\.html\fR
Package the \.gem files required by your application into the \fBvendor/cache\fR directory
\fBbundle cache(1)\fR \fIbundle\-cache\.1\.html\fR
Cache the \.gem files required by your application into the \fBvendor/cache\fR directory
.
.TP
\fBbundle exec(1)\fR \fIbundle\-exec\.1\.html\fR
Expand Down
6 changes: 3 additions & 3 deletions man/bundle.1.txt
Expand Up @@ -35,9 +35,9 @@ PRIMARY COMMANDS
bundle update(1) bundle-update.1.html
Update dependencies to their latest versions

bundle package(1) bundle-package.1.html
Package the .gem files required by your application into the
vendor/cache directory
bundle cache(1) bundle-cache.1.html
Cache the .gem files required by your application into the ven-
dor/cache directory

bundle exec(1) bundle-exec.1.html
Execute a script in the current bundle
Expand Down
4 changes: 2 additions & 2 deletions man/bundle.ronn
Expand Up @@ -36,8 +36,8 @@ We divide `bundle` subcommands into primary commands and utilities:
* [`bundle update(1)`](bundle-update.1.html):
Update dependencies to their latest versions

* [`bundle package(1)`](bundle-package.1.html):
Package the .gem files required by your application into the
* [`bundle cache(1)`](bundle-cache.1.html):
Cache the .gem files required by your application into the
`vendor/cache` directory

* [`bundle exec(1)`](bundle-exec.1.html):
Expand Down
2 changes: 1 addition & 1 deletion man/index.txt
Expand Up @@ -2,6 +2,7 @@ Gemfile(5) gemfile.5
bundle(1) bundle.1
bundle-add(1) bundle-add.1
bundle-binstubs(1) bundle-binstubs.1
bundle-cache(1) bundle-cache.1
bundle-check(1) bundle-check.1
bundle-clean(1) bundle-clean.1
bundle-config(1) bundle-config.1
Expand All @@ -16,7 +17,6 @@ bundle-list(1) bundle-list.1
bundle-lock(1) bundle-lock.1
bundle-open(1) bundle-open.1
bundle-outdated(1) bundle-outdated.1
bundle-package(1) bundle-package.1
bundle-platform(1) bundle-platform.1
bundle-pristine(1) bundle-pristine.1
bundle-remove(1) bundle-remove.1
Expand Down

0 comments on commit cb06ff7

Please sign in to comment.