зеркало из https://github.com/github/ruby.git
80 строки
3.4 KiB
Plaintext
80 строки
3.4 KiB
Plaintext
BUNDLE-PACKAGE(1) BUNDLE-PACKAGE(1)
|
|
|
|
|
|
|
|
1mNAME0m
|
|
1mbundle-package 22m- Package your needed 1m.gem 22mfiles into your application
|
|
|
|
1mSYNOPSIS0m
|
|
1mbundle package0m
|
|
|
|
1mDESCRIPTION0m
|
|
Copy all of the 1m.gem 22mfiles needed to run the application into the 1mven-0m
|
|
1mdor/cache 22mdirectory. In the future, when running [bundle
|
|
install(1)][bundle-install], use the gems in the cache in preference to
|
|
the ones on 1mrubygems.org22m.
|
|
|
|
1mGIT AND PATH GEMS0m
|
|
Since Bundler 1.2, the 1mbundle package 22mcommand can also package 1m:git 22mand
|
|
1m:path 22mdependencies besides .gem files. This needs to be explicitly
|
|
enabled via the 1m--all 22moption. Once used, the 1m--all 22moption will be
|
|
remembered.
|
|
|
|
1mSUPPORT FOR MULTIPLE PLATFORMS0m
|
|
When using gems that have different packages for different platforms,
|
|
Bundler 1.8 and newer support caching of gems for other platforms where
|
|
the Gemfile has been resolved (i.e. present in the lockfile) in 1mven-0m
|
|
1mdor/cache22m. This needs to be enabled via the 1m--all-platforms 22moption.
|
|
This setting will be remembered in your local bundler configuration.
|
|
|
|
1mREMOTE FETCHING0m
|
|
By default, if you run 1mbundle install(1)22m](bundle-install.1.html) after
|
|
running bundle package(1) 4mbundle-package.1.html24m, bundler will still
|
|
connect to 1mrubygems.org 22mto check whether a platform-specific gem exists
|
|
for any of the gems in 1mvendor/cache22m.
|
|
|
|
For instance, consider this Gemfile(5):
|
|
|
|
|
|
|
|
source "https://rubygems.org"
|
|
|
|
gem "nokogiri"
|
|
|
|
|
|
|
|
If you run 1mbundle package 22munder C Ruby, bundler will retrieve the ver-
|
|
sion of 1mnokogiri 22mfor the 1m"ruby" 22mplatform. If you deploy to JRuby and
|
|
run 1mbundle install22m, bundler is forced to check to see whether a 1m"java"0m
|
|
platformed 1mnokogiri 22mexists.
|
|
|
|
Even though the 1mnokogiri 22mgem for the Ruby platform is 4mtechnically0m
|
|
acceptable on JRuby, it has a C extension that does not run on JRuby.
|
|
As a result, bundler will, by default, still connect to 1mrubygems.org 22mto
|
|
check whether it has a version of one of your gems more specific to
|
|
your platform.
|
|
|
|
This problem is also not limited to the 1m"java" 22mplatform. 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 1mvendor/cache 22mare appro-
|
|
priate for the platform you are on, you can run 1mbundle install --local0m
|
|
to skip checking for more appropriate gems, and use the ones in 1mven-0m
|
|
1mdor/cache22m.
|
|
|
|
One way to be sure that you have the right platformed versions of all
|
|
your gems is to run 1mbundle package 22mon an identical machine and check in
|
|
the gems. For instance, you can run 1mbundle package 22mon an identical
|
|
staging box during your staging process, and check in the 1mvendor/cache0m
|
|
before deploying to production.
|
|
|
|
By default, bundle package(1) 4mbundle-package.1.html24m fetches and also
|
|
installs the gems to the default location. To package the dependencies
|
|
to 1mvendor/cache 22mwithout installing them to the local install location,
|
|
you can run 1mbundle package --no-install22m.
|
|
|
|
|
|
|
|
October 2018 BUNDLE-PACKAGE(1)
|