Parent

Bundler::Dsl

Constants

VALID_PLATFORMS

Public Class Methods

deprecate(name, replacement = nil) click to toggle source

Deprecated methods

# File lib/bundler/dsl.rb, line 144
def self.deprecate(name, replacement = nil)
  define_method(name) do |*|
    message = "'#{name}' has been removed from the Gemfile DSL, "
    if replacement
      message << "and has been replaced with '#{replacement}'."
    else
      message << "and is no longer supported."
    end
    message << "\nSee the README for more information on upgrading from Bundler 0.8."
    raise DeprecatedError, message
  end
end
evaluate(gemfile, lockfile, unlock) click to toggle source
# File lib/bundler/dsl.rb, line 5
def self.evaluate(gemfile, lockfile, unlock)
  builder = new
  builder.instance_eval(Bundler.read_file(gemfile.to_s), gemfile.to_s, 1)
  builder.to_definition(lockfile, unlock)
end
new() click to toggle source
# File lib/bundler/dsl.rb, line 13
def initialize
  @rubygems_source = Source::Rubygems.new
  @source          = nil
  @sources         = []
  @dependencies    = []
  @groups          = []
  @platforms       = []
  @env             = nil
end

Public Instance Methods

env(name) click to toggle source
# File lib/bundler/dsl.rb, line 135
def env(name)
  @env, old = name, @env
  yield
ensure
  @env = old
end
gem(name, *args) click to toggle source
# File lib/bundler/dsl.rb, line 47
def gem(name, *args)
  if name.is_a?(Symbol)
    raise GemfileError, %{You need to specify gem names as Strings. Use 'gem "#{name.to_s}"' instead.}
  end

  options = Hash === args.last ? args.pop : {}
  version = args || [">= 0"]

  _deprecated_options(options)
  _normalize_options(name, version, options)

  dep = Dependency.new(name, version, options)

  if current = @dependencies.find { |d| d.name == dep.name }
    if current.requirement != dep.requirement
      raise DslError, "You cannot specify the same gem twice with different version requirements. "                            "You specified: #{current.name} (#{current.requirement}) and "                            "#{dep.name} (#{dep.requirement})"
    end

    if current.source != dep.source
      raise DslError, "You cannot specify the same gem twice coming from different sources. You "                            "specified that #{dep.name} (#{dep.requirement}) should come from "                            "#{current.source || 'an unspecfied source'} and #{dep.source}"
    end
  end
  @dependencies << Dependency.new(name, version, options)
end
gemspec(opts = nil) click to toggle source
# File lib/bundler/dsl.rb, line 23
def gemspec(opts = nil)
  path              = opts && opts[:path] || '.'
  name              = opts && opts[:name] || '*'
  development_group = opts && opts[:development_group] || :development
  path              = File.expand_path(path, Bundler.default_gemfile.dirname)
  gemspecs = Dir[File.join(path, "#{name}.gemspec")]

  case gemspecs.size
  when 1
    spec = Bundler.load_gemspec(gemspecs.first)
    raise InvalidOption, "There was an error loading the gemspec at #{gemspecs.first}." unless spec
    gem spec.name, :path => path
    group(development_group) do
      spec.development_dependencies.each do |dep|
        gem dep.name, *dep.requirement.as_list
      end
    end
  when 0
    raise InvalidOption, "There are no gemspecs at #{path}."
  else
    raise InvalidOption, "There are multiple gemspecs at #{path}. Please use the :name option to specify which one."
  end
end
git(uri, options = {}, source_options = {}, &blk) click to toggle source
# File lib/bundler/dsl.rb, line 99
def git(uri, options = {}, source_options = {}, &blk)
  unless block_given?
    msg = "You can no longer specify a git source by itself. Instead, \n"                "either use the :git option on a gem, or specify the gems that \n"                "bundler should find in the git source by passing a block to \n"                "the git method, like: \n\n"                "  git 'git://github.com/rails/rails.git' do\n"                "    gem 'rails'\n"                "  end"
    raise DeprecatedError, msg
  end

  source Source::Git.new(_normalize_hash(options).merge("uri" => uri)), source_options, &blk
end
group(*args, &blk) click to toggle source
# File lib/bundler/dsl.rb, line 120
def group(*args, &blk)
  @groups.concat args
  yield
ensure
  args.each { @groups.pop }
end
path(path, options = {}, source_options = {}, &blk) click to toggle source
# File lib/bundler/dsl.rb, line 95
def path(path, options = {}, source_options = {}, &blk)
  source Source::Path.new(_normalize_hash(options).merge("path" => Pathname.new(path))), source_options, &blk
end
platform(*platforms) click to toggle source
Alias for: platforms
platforms(*platforms) click to toggle source
# File lib/bundler/dsl.rb, line 127
def platforms(*platforms)
  @platforms.concat platforms
  yield
ensure
  platforms.each { @platforms.pop }
end
Also aliased as: platform
source(source, options = {}) click to toggle source
# File lib/bundler/dsl.rb, line 76
def source(source, options = {})
  case source
  when :gemcutter, :rubygems, :rubyforge then
    rubygems_source "http://rubygems.org"
    return
  when String
    rubygems_source source
    return
  end

  @source = source
  options[:prepend] ? @sources.unshift(@source) : @sources << @source

  yield if block_given?
  @source
ensure
  @source = nil
end
to_definition(lockfile, unlock) click to toggle source
# File lib/bundler/dsl.rb, line 114
def to_definition(lockfile, unlock)
  @sources << @rubygems_source
  @sources.uniq!
  Definition.new(lockfile, @dependencies, @sources, unlock)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.