summaryrefslogtreecommitdiff
path: root/man/gemfile.5.ronn
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2020-12-08 16:36:29 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-12-08 17:30:02 +0900
commit473f9d2df0ddd7fdb5cc73fa3ad49b2f19f22b06 (patch)
tree6b39312502d32474da0157f5d55620fabd6454ea /man/gemfile.5.ronn
parent4aca77edde91f826aa243e268bf1ef5214530583 (diff)
Merge prepare version of Bundler 2.2.0
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3864
Diffstat (limited to 'man/gemfile.5.ronn')
-rw-r--r--man/gemfile.5.ronn517
1 files changed, 0 insertions, 517 deletions
diff --git a/man/gemfile.5.ronn b/man/gemfile.5.ronn
deleted file mode 100644
index 994f0d66bd..0000000000
--- a/man/gemfile.5.ronn
+++ /dev/null
@@ -1,517 +0,0 @@
-Gemfile(5) -- A format for describing gem dependencies for Ruby programs
-========================================================================
-
-## SYNOPSIS
-
-A `Gemfile` describes the gem dependencies required to execute associated
-Ruby code.
-
-Place the `Gemfile` in the root of the directory containing the associated
-code. For instance, in a Rails application, place the `Gemfile` in the same
-directory as the `Rakefile`.
-
-## SYNTAX
-
-A `Gemfile` is evaluated as Ruby code, in a context which makes available
-a number of methods used to describe the gem requirements.
-
-## GLOBAL SOURCES
-
-At the top of the `Gemfile`, add a line for the `Rubygems` source that contains
-the gems listed in the `Gemfile`.
-
- source "https://rubygems.org"
-
-It is possible, but not recommended as of Bundler 1.7, to add multiple global
-`source` lines. Each of these `source`s `MUST` be a valid Rubygems repository.
-
-Sources are checked for gems following the heuristics described in
-[SOURCE PRIORITY][]. If a gem is found in more than one global source, Bundler
-will print a warning after installing the gem indicating which source was used,
-and listing the other sources where the gem is available. A specific source can
-be selected for gems that need to use a non-standard repository, suppressing
-this warning, by using the [`:source` option](#SOURCE) or a
-[`source` block](#BLOCK-FORM-OF-SOURCE-GIT-PATH-GROUP-and-PLATFORMS).
-
-### CREDENTIALS
-
-Some gem sources require a username and password. Use [bundle config(1)](bundle-config.1.html) to set
-the username and password for any of the sources that need it. The command must
-be run once on each computer that will install the Gemfile, but this keeps the
-credentials from being stored in plain text in version control.
-
- bundle config gems.example.com user:password
-
-For some sources, like a company Gemfury account, it may be easier to
-include the credentials in the Gemfile as part of the source URL.
-
- source "https://user:password@gems.example.com"
-
-Credentials in the source URL will take precedence over credentials set using
-`config`.
-
-## RUBY
-
-If your application requires a specific Ruby version or engine, specify your
-requirements using the `ruby` method, with the following arguments.
-All parameters are `OPTIONAL` unless otherwise specified.
-
-### VERSION (required)
-
-The version of Ruby that your application requires. If your application
-requires an alternate Ruby engine, such as JRuby, Rubinius or TruffleRuby, this
-should be the Ruby version that the engine is compatible with.
-
- ruby "1.9.3"
-
-### ENGINE
-
-Each application _may_ specify a Ruby engine. If an engine is specified, an
-engine version _must_ also be specified.
-
-What exactly is an Engine?
- - A Ruby engine is an implementation of the Ruby language.
-
- - For background: the reference or original implementation of the Ruby
- programming language is called
- [Matz's Ruby Interpreter](https://en.wikipedia.org/wiki/Ruby_MRI), or MRI
- for short. This is named after Ruby creator Yukihiro Matsumoto,
- also known as Matz. MRI is also known as CRuby, because it is written in C.
- MRI is the most widely used Ruby engine.
-
- - [Other implementations](https://www.ruby-lang.org/en/about/) of Ruby exist.
- Some of the more well-known implementations include
- [Rubinius](https://rubinius.com/), and [JRuby](http://jruby.org/).
- Rubinius is an alternative implementation of Ruby written in Ruby.
- JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine.
-
-### ENGINE VERSION
-
-Each application _may_ specify a Ruby engine version. If an engine version is
-specified, an engine _must_ also be specified. If the engine is "ruby" the
-engine version specified _must_ match the Ruby version.
-
- ruby "1.8.7", :engine => "jruby", :engine_version => "1.6.7"
-
-### PATCHLEVEL
-
-Each application _may_ specify a Ruby patchlevel.
-
- ruby "2.0.0", :patchlevel => "247"
-
-## GEMS
-
-Specify gem requirements using the `gem` method, with the following arguments.
-All parameters are `OPTIONAL` unless otherwise specified.
-
-### NAME (required)
-
-For each gem requirement, list a single _gem_ line.
-
- gem "nokogiri"
-
-### VERSION
-
-Each _gem_ `MAY` have one or more version specifiers.
-
- gem "nokogiri", ">= 1.4.2"
- gem "RedCloth", ">= 4.1.0", "< 4.2.0"
-
-### REQUIRE AS
-
-Each _gem_ `MAY` specify files that should be used when autorequiring via
-`Bundler.require`. You may pass an array with multiple files or `true` if the file
-you want `required` has the same name as _gem_ or `false` to
-prevent any file from being autorequired.
-
- gem "redis", :require => ["redis/connection/hiredis", "redis"]
- gem "webmock", :require => false
- gem "byebug", :require => true
-
-The argument defaults to the name of the gem. For example, these are identical:
-
- gem "nokogiri"
- gem "nokogiri", :require => "nokogiri"
- gem "nokogiri", :require => true
-
-### GROUPS
-
-Each _gem_ `MAY` specify membership in one or more groups. Any _gem_ that does
-not specify membership in any group is placed in the `default` group.
-
- gem "rspec", :group => :test
- gem "wirble", :groups => [:development, :test]
-
-The Bundler runtime allows its two main methods, `Bundler.setup` and
-`Bundler.require`, to limit their impact to particular groups.
-
- # setup adds gems to Ruby's load path
- Bundler.setup # defaults to all groups
- require "bundler/setup" # same as Bundler.setup
- Bundler.setup(:default) # only set up the _default_ group
- Bundler.setup(:test) # only set up the _test_ group (but `not` _default_)
- Bundler.setup(:default, :test) # set up the _default_ and _test_ groups, but no others
-
- # require requires all of the gems in the specified groups
- Bundler.require # defaults to the _default_ group
- Bundler.require(:default) # identical
- Bundler.require(:default, :test) # requires the _default_ and _test_ groups
- Bundler.require(:test) # requires the _test_ group
-
-The Bundler CLI allows you to specify a list of groups whose gems `bundle install` should
-not install with the `without` configuration.
-
-To specify multiple groups to ignore, specify a list of groups separated by spaces.
-
- bundle config set --local without test
- bundle config set --local without development test
-
-Also, calling `Bundler.setup` with no parameters, or calling `require "bundler/setup"`
-will setup all groups except for the ones you excluded via `--without` (since they
-are not available).
-
-Note that on `bundle install`, bundler downloads and evaluates all gems, in order to
-create a single canonical list of all of the required gems and their dependencies.
-This means that you cannot list different versions of the same gems in different
-groups. For more details, see [Understanding Bundler](https://bundler.io/rationale.html).
-
-### PLATFORMS
-
-If a gem should only be used in a particular platform or set of platforms, you can
-specify them. Platforms are essentially identical to groups, except that you do not
-need to use the `--without` install-time flag to exclude groups of gems for other
-platforms.
-
-There are a number of `Gemfile` platforms:
-
- * `ruby`:
- C Ruby (MRI), Rubinius or TruffleRuby, but `NOT` Windows
- * `mri`:
- Same as _ruby_, but only C Ruby (MRI)
- * `mingw`:
- Windows 32 bit 'mingw32' platform (aka RubyInstaller)
- * `x64_mingw`:
- Windows 64 bit 'mingw32' platform (aka RubyInstaller x64)
- * `rbx`:
- Rubinius
- * `jruby`:
- JRuby
- * `truffleruby`:
- TruffleRuby
- * `mswin`:
- Windows
-
-You can restrict further by platform and version for all platforms *except* for
-`rbx`, `jruby`, `truffleruby` and `mswin`.
-
-To specify a version in addition to a platform, append the version number without
-the delimiter to the platform. For example, to specify that a gem should only be
-used on platforms with Ruby 2.3, use:
-
- ruby_23
-
-The full list of platforms and supported versions includes:
-
- * `ruby`:
- 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
- * `mri`:
- 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
- * `mingw`:
- 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
- * `x64_mingw`:
- 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
-
-As with groups, you can specify one or more platforms:
-
- gem "weakling", :platforms => :jruby
- gem "ruby-debug", :platforms => :mri_18
- gem "nokogiri", :platforms => [:mri_18, :jruby]
-
-All operations involving groups ([`bundle install`](bundle-install.1.html), `Bundler.setup`,
-`Bundler.require`) behave exactly the same as if any groups not
-matching the current platform were explicitly excluded.
-
-### SOURCE
-
-You can select an alternate Rubygems repository for a gem using the ':source'
-option.
-
- gem "some_internal_gem", :source => "https://gems.example.com"
-
-This forces the gem to be loaded from this source and ignores any global sources
-declared at the top level of the file. If the gem does not exist in this source,
-it will not be installed.
-
-Bundler will search for child dependencies of this gem by first looking in the
-source selected for the parent, but if they are not found there, it will fall
-back on global sources using the ordering described in [SOURCE PRIORITY][].
-
-Selecting a specific source repository this way also suppresses the ambiguous
-gem warning described above in
-[GLOBAL SOURCES (#source)](#GLOBAL-SOURCES).
-
-Using the `:source` option for an individual gem will also make that source
-available as a possible global source for any other gems which do not specify
-explicit sources. Thus, when adding gems with explicit sources, it is
-recommended that you also ensure all other gems in the Gemfile are using
-explicit sources.
-
-### GIT
-
-If necessary, you can specify that a gem is located at a particular
-git repository using the `:git` parameter. The repository can be accessed via
-several protocols:
-
- * `HTTP(S)`:
- gem "rails", :git => "https://github.com/rails/rails.git"
- * `SSH`:
- gem "rails", :git => "git@github.com:rails/rails.git"
- * `git`:
- gem "rails", :git => "git://github.com/rails/rails.git"
-
-If using SSH, the user that you use to run `bundle install` `MUST` have the
-appropriate keys available in their `$HOME/.ssh`.
-
-`NOTE`: `http://` and `git://` URLs should be avoided if at all possible. These
-protocols are unauthenticated, so a man-in-the-middle attacker can deliver
-malicious code and compromise your system. HTTPS and SSH are strongly
-preferred.
-
-The `group`, `platforms`, and `require` options are available and behave
-exactly the same as they would for a normal gem.
-
-A git repository `SHOULD` have at least one file, at the root of the
-directory containing the gem, with the extension `.gemspec`. This file
-`MUST` contain a valid gem specification, as expected by the `gem build`
-command.
-
-If a git repository does not have a `.gemspec`, bundler will attempt to
-create one, but it will not contain any dependencies, executables, or
-C extension compilation instructions. As a result, it may fail to properly
-integrate into your application.
-
-If a git repository does have a `.gemspec` for the gem you attached it
-to, a version specifier, if provided, means that the git repository is
-only valid if the `.gemspec` specifies a version matching the version
-specifier. If not, bundler will print a warning.
-
- gem "rails", "2.3.8", :git => "https://github.com/rails/rails.git"
- # bundle install will fail, because the .gemspec in the rails
- # repository's master branch specifies version 3.0.0
-
-If a git repository does `not` have a `.gemspec` for the gem you attached
-it to, a version specifier `MUST` be provided. Bundler will use this
-version in the simple `.gemspec` it creates.
-
-Git repositories support a number of additional options.
-
- * `branch`, `tag`, and `ref`:
- You `MUST` only specify at most one of these options. The default
- is `:branch => "master"`. For example:
-
- gem "rails", :git => "https://github.com/rails/rails.git", :branch => "5-0-stable"
-
- gem "rails", :git => "https://github.com/rails/rails.git", :tag => "v5.0.0"
-
- gem "rails", :git => "https://github.com/rails/rails.git", :ref => "4aded"
-
- * `submodules`:
- For reference, a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
- lets you have another git repository within a subfolder of your repository.
- Specify `:submodules => true` to cause bundler to expand any
- submodules included in the git repository
-
-If a git repository contains multiple `.gemspecs`, each `.gemspec`
-represents a gem located at the same place in the file system as
-the `.gemspec`.
-
- |~rails [git root]
- | |-rails.gemspec [rails gem located here]
- |~actionpack
- | |-actionpack.gemspec [actionpack gem located here]
- |~activesupport
- | |-activesupport.gemspec [activesupport gem located here]
- |...
-
-To install a gem located in a git repository, bundler changes to
-the directory containing the gemspec, runs `gem build name.gemspec`
-and then installs the resulting gem. The `gem build` command,
-which comes standard with Rubygems, evaluates the `.gemspec` in
-the context of the directory in which it is located.
-
-### GIT SOURCE
-
-A custom git source can be defined via the `git_source` method. Provide the source's name
-as an argument, and a block which receives a single argument and interpolates it into a
-string to return the full repo address:
-
- git_source(:stash){ |repo_name| "https://stash.corp.acme.pl/#{repo_name}.git" }
- gem 'rails', :stash => 'forks/rails'
-
-In addition, if you wish to choose a specific branch:
-
- gem "rails", :stash => "forks/rails", :branch => "branch_name"
-
-### GITHUB
-
-`NOTE`: This shorthand should be avoided until Bundler 2.0, since it
-currently expands to an insecure `git://` URL. This allows a
-man-in-the-middle attacker to compromise your system.
-
-If the git repository you want to use is hosted on GitHub and is public, you can use the
-:github shorthand to specify the github username and repository name (without the
-trailing ".git"), separated by a slash. If both the username and repository name are the
-same, you can omit one.
-
- gem "rails", :github => "rails/rails"
- gem "rails", :github => "rails"
-
-Are both equivalent to
-
- gem "rails", :git => "git://github.com/rails/rails.git"
-
-Since the `github` method is a specialization of `git_source`, it accepts a `:branch` named argument.
-
-### GIST
-
-If the git repository you want to use is hosted as a Github Gist and is public, you can use
-the :gist shorthand to specify the gist identifier (without the trailing ".git").
-
- gem "the_hatch", :gist => "4815162342"
-
-Is equivalent to:
-
- gem "the_hatch", :git => "https://gist.github.com/4815162342.git"
-
-Since the `gist` method is a specialization of `git_source`, it accepts a `:branch` named argument.
-
-### BITBUCKET
-
-If the git repository you want to use is hosted on Bitbucket and is public, you can use the
-:bitbucket shorthand to specify the bitbucket username and repository name (without the
-trailing ".git"), separated by a slash. If both the username and repository name are the
-same, you can omit one.
-
- gem "rails", :bitbucket => "rails/rails"
- gem "rails", :bitbucket => "rails"
-
-Are both equivalent to
-
- gem "rails", :git => "https://rails@bitbucket.org/rails/rails.git"
-
-Since the `bitbucket` method is a specialization of `git_source`, it accepts a `:branch` named argument.
-
-### PATH
-
-You can specify that a gem is located in a particular location
-on the file system. Relative paths are resolved relative to the
-directory containing the `Gemfile`.
-
-Similar to the semantics of the `:git` option, the `:path`
-option requires that the directory in question either contains
-a `.gemspec` for the gem, or that you specify an explicit
-version that bundler should use.
-
-Unlike `:git`, bundler does not compile C extensions for
-gems specified as paths.
-
- gem "rails", :path => "vendor/rails"
-
-If you would like to use multiple local gems directly from the filesystem, you can set a global `path` option to the path containing the gem's files. This will automatically load gemspec files from subdirectories.
-
- path 'components' do
- gem 'admin_ui'
- gem 'public_ui'
- end
-
-## BLOCK FORM OF SOURCE, GIT, PATH, GROUP and PLATFORMS
-
-The `:source`, `:git`, `:path`, `:group`, and `:platforms` options may be
-applied to a group of gems by using block form.
-
- source "https://gems.example.com" do
- gem "some_internal_gem"
- gem "another_internal_gem"
- end
-
- git "https://github.com/rails/rails.git" do
- gem "activesupport"
- gem "actionpack"
- end
-
- platforms :ruby do
- gem "ruby-debug"
- gem "sqlite3"
- end
-
- group :development, :optional => true do
- gem "wirble"
- gem "faker"
- end
-
-In the case of the group block form the :optional option can be given
-to prevent a group from being installed unless listed in the `--with`
-option given to the `bundle install` command.
-
-In the case of the `git` block form, the `:ref`, `:branch`, `:tag`,
-and `:submodules` options may be passed to the `git` method, and
-all gems in the block will inherit those options.
-
-The presence of a `source` block in a Gemfile also makes that source
-available as a possible global source for any other gems which do not specify
-explicit sources. Thus, when defining source blocks, it is
-recommended that you also ensure all other gems in the Gemfile are using
-explicit sources, either via source blocks or `:source` directives on
-individual gems.
-
-## INSTALL_IF
-
-The `install_if` method allows gems to be installed based on a proc or lambda.
-This is especially useful for optional gems that can only be used if certain
-software is installed or some other conditions are met.
-
- install_if -> { RUBY_PLATFORM =~ /darwin/ } do
- gem "pasteboard"
- end
-
-## GEMSPEC
-
-The [`.gemspec`](http://guides.rubygems.org/specification-reference/) file is where
- you provide metadata about your gem to Rubygems. Some required Gemspec
- attributes include the name, description, and homepage of your gem. This is
- also where you specify the dependencies your gem needs to run.
-
-If you wish to use Bundler to help install dependencies for a gem while it is
-being developed, use the `gemspec` method to pull in the dependencies listed in
-the `.gemspec` file.
-
-The `gemspec` method adds any runtime dependencies as gem requirements in the
-default group. It also adds development dependencies as gem requirements in the
-`development` group. Finally, it adds a gem requirement on your project (`:path
-=> '.'`). In conjunction with `Bundler.setup`, this allows you to require project
-files in your test code as you would if the project were installed as a gem; you
-need not manipulate the load path manually or require project files via relative
-paths.
-
-The `gemspec` method supports optional `:path`, `:glob`, `:name`, and `:development_group`
-options, which control where bundler looks for the `.gemspec`, the glob it uses to look
-for the gemspec (defaults to: "{,*,*/*}.gemspec"), what named `.gemspec` it uses
-(if more than one is present), and which group development dependencies are included in.
-
-When a `gemspec` dependency encounters version conflicts during resolution, the
-local version under development will always be selected -- even if there are
-remote versions that better match other requirements for the `gemspec` gem.
-
-## SOURCE PRIORITY
-
-When attempting to locate a gem to satisfy a gem requirement,
-bundler uses the following priority order:
-
- 1. The source explicitly attached to the gem (using `:source`, `:path`, or
- `:git`)
- 2. For implicit gems (dependencies of explicit gems), any source, git, or path
- repository declared on the parent. This results in bundler prioritizing the
- ActiveSupport gem from the Rails git repository over ones from
- `rubygems.org`
- 3. The sources specified via global `source` lines, searching each source in
- your `Gemfile` from last added to first added.