A semi-compatible DSL for the Bundler Gemfile and Isolate formats.

Sections
Methods
G
L
N
P
R
S
Constants
ENGINE_MAP = { # :nodoc: :jruby => %w[jruby], :jruby_18 => %w[jruby], :jruby_19 => %w[jruby], :maglev => %w[maglev], :mri => %w[ruby], :mri_18 => %w[ruby], :mri_19 => %w[ruby], :mri_20 => %w[ruby], :mri_21 => %w[ruby], :rbx => %w[rbx], :ruby => %w[ruby rbx maglev], :ruby_18 => %w[ruby rbx maglev], :ruby_19 => %w[ruby rbx maglev], :ruby_20 => %w[ruby rbx maglev], :ruby_21 => %w[ruby rbx maglev], }
 
PLATFORM_MAP = { # :nodoc: :jruby => Gem::Platform::RUBY, :jruby_18 => Gem::Platform::RUBY, :jruby_19 => Gem::Platform::RUBY, :maglev => Gem::Platform::RUBY, :mingw => x86_mingw, :mingw_18 => x86_mingw, :mingw_19 => x86_mingw, :mingw_20 => x86_mingw, :mingw_21 => x86_mingw, :mri => Gem::Platform::RUBY, :mri_18 => Gem::Platform::RUBY, :mri_19 => Gem::Platform::RUBY, :mri_20 => Gem::Platform::RUBY, :mri_21 => Gem::Platform::RUBY, :mswin => Gem::Platform::RUBY, :rbx => Gem::Platform::RUBY, :ruby => Gem::Platform::RUBY, :ruby_18 => Gem::Platform::RUBY, :ruby_19 => Gem::Platform::RUBY, :ruby_20 => Gem::Platform::RUBY, :ruby_21 => Gem::Platform::RUBY, :x64_mingw => x64_mingw, :x64_mingw_20 => x64_mingw, :x64_mingw_21 => x64_mingw }
 
VERSION_MAP = { # :nodoc: :jruby => gt_eq_0, :jruby_18 => tilde_gt_1_8_0, :jruby_19 => tilde_gt_1_9_0, :maglev => gt_eq_0, :mingw => gt_eq_0, :mingw_18 => tilde_gt_1_8_0, :mingw_19 => tilde_gt_1_9_0, :mingw_20 => tilde_gt_2_0_0, :mingw_21 => tilde_gt_2_1_0, :mri => gt_eq_0, :mri_18 => tilde_gt_1_8_0, :mri_19 => tilde_gt_1_9_0, :mri_20 => tilde_gt_2_0_0, :mri_21 => tilde_gt_2_1_0, :mswin => gt_eq_0, :rbx => gt_eq_0, :ruby => gt_eq_0, :ruby_18 => tilde_gt_1_8_0, :ruby_19 => tilde_gt_1_9_0, :ruby_20 => tilde_gt_2_0_0, :ruby_21 => tilde_gt_2_1_0, :x64_mingw => gt_eq_0, :x64_mingw_20 => tilde_gt_2_0_0, :x64_mingw_21 => tilde_gt_2_1_0, }
 
WINDOWS = { # :nodoc: :mingw => :only, :mingw_18 => :only, :mingw_19 => :only, :mingw_20 => :only, :mingw_21 => :only, :mri => :never, :mri_18 => :never, :mri_19 => :never, :mri_20 => :never, :mri_21 => :never, :mswin => :only, :rbx => :never, :ruby => :never, :ruby_18 => :never, :ruby_19 => :never, :ruby_20 => :never, :ruby_21 => :never, :x64_mingw => :only, :x64_mingw_20 => :only, :x64_mingw_21 => :only, }
 
Class Public methods
new(set, path)

Creates a new GemDependencyAPI that will add dependencies to the Gem::RequestSet set based on the dependency API description in path.

# File lib/rubygems/request_set/gem_dependency_api.rb, line 134
def initialize set, path
  @set = set
  @path = path

  @current_groups     = nil
  @current_platform   = nil
  @current_repository = nil
  @default_sources    = true
  @git_set            = @set.git_set
  @requires           = Hash.new { |h, name| h[name] = [] }
  @vendor_set         = @set.vendor_set
  @gem_sources        = {}
  @without_groups     = []
end
Instance Public methods
load()

Loads the gem dependency file

# File lib/rubygems/request_set/gem_dependency_api.rb, line 192
def load
  instance_eval File.read(@path).untaint, @path, 1
end
Gem Dependencies DSL
Instance Public methods
gem(name)
gem(name, *requirements)
gem(name, *requirements, options)

Specifies a gem dependency with the given name and requirements. You may also supply options following the requirements

# File lib/rubygems/request_set/gem_dependency_api.rb, line 206
def gem name, *requirements
  options = requirements.pop if requirements.last.kind_of?(Hash)
  options ||= {}

  options[:git] = @current_repository if @current_repository

  source_set = false

  source_set ||= gem_path   name, options
  source_set ||= gem_git    name, options
  source_set ||= gem_github name, options

  return unless gem_platforms options

  groups = gem_group name, options

  return unless (groups & @without_groups).empty?

  pin_gem_source name, :default unless source_set

  gem_requires name, options

  @set.gem name, *requirements
end
gemspec(options = {})

Loads dependencies from a gemspec file.

# File lib/rubygems/request_set/gem_dependency_api.rb, line 387
def gemspec options = {}
  name              = options.delete(:name) || '{,*}'
  path              = options.delete(:path) || '.'
  development_group = options.delete(:development_group) || :development

  spec = find_gemspec name, path

  groups = gem_group spec.name, {}

  add_dependencies groups, spec.runtime_dependencies

  groups << development_group

  add_dependencies groups, spec.development_dependencies

  gem_requires spec.name, options
end
git(repository)

Block form for specifying gems from a git repository.

# File lib/rubygems/request_set/gem_dependency_api.rb, line 366
def git repository
  @current_repository = repository

  yield

ensure
  @current_repository = nil
end
group(*groups)

Block form for placing a dependency in the given groups.

# File lib/rubygems/request_set/gem_dependency_api.rb, line 409
def group *groups
  @current_groups = groups

  yield

ensure
  @current_groups = nil
end
platform(what)

Block form for restricting gems to a particular platform.

Also aliased as: platforms
# File lib/rubygems/request_set/gem_dependency_api.rb, line 445
def platform what
  @current_platform = what

  yield

ensure
  @current_platform = nil
end
platforms(what)

Block form for restricting gems to a particular platform.

Alias for: platform
ruby(version, options = {})

Restricts this gem dependencies file to the given ruby version. The :engine options from Bundler are currently ignored.

# File lib/rubygems/request_set/gem_dependency_api.rb, line 466
def ruby version, options = {}
  engine         = options[:engine]
  engine_version = options[:engine_version]

  raise ArgumentError,
        'you must specify engine_version along with the ruby engine' if
          engine and not engine_version

  unless RUBY_VERSION == version then
    message = "Your Ruby version is #{RUBY_VERSION}, " +
              "but your #{gem_deps_file} requires #{version}"

    raise Gem::RubyVersionMismatch, message
  end

  if engine and engine != Gem.ruby_engine then
    message = "Your ruby engine is #{Gem.ruby_engine}, " +
              "but your #{gem_deps_file} requires #{engine}"

    raise Gem::RubyVersionMismatch, message
  end

  if engine_version then
    my_engine_version = Object.const_get "#{Gem.ruby_engine.upcase}_VERSION"

    if engine_version != my_engine_version then
      message =
        "Your ruby engine version is #{Gem.ruby_engine} #{my_engine_version}, " +
        "but your #{gem_deps_file} requires #{engine} #{engine_version}"

      raise Gem::RubyVersionMismatch, message
    end
  end

  return true
end
source(url)

Sets url as a source for gems for this dependency API.

# File lib/rubygems/request_set/gem_dependency_api.rb, line 508
def source url
  Gem.sources.clear if @default_sources

  @default_sources = false

  Gem.sources << url
end