Class: Bundler::Dsl
- Inherits:
-
Object
- Object
- Bundler::Dsl
- Defined in:
- lib/bundler/dsl.rb
Constant Summary collapse
- VALID_PLATFORMS =
Bundler::Dependency::PLATFORM_MAP.keys.freeze
Class Method Summary collapse
-
.deprecate(name, replacement = nil) ⇒ Object
Deprecated methods.
- .evaluate(gemfile, lockfile, unlock) ⇒ Object
Instance Method Summary collapse
- #env(name) ⇒ Object
- #gem(name, *args) ⇒ Object
- #gemspec(opts = nil) ⇒ Object
- #git(uri, options = {}, source_options = {}, &blk) ⇒ Object
- #group(*args, &blk) ⇒ Object
-
#initialize ⇒ Dsl
constructor
A new instance of Dsl.
- #path(path, options = {}, source_options = {}, &blk) ⇒ Object
- #platforms(*platforms) ⇒ Object (also: #platform)
- #source(source, options = {}) ⇒ Object
- #to_definition(lockfile, unlock) ⇒ Object
Constructor Details
Class Method Details
.deprecate(name, replacement = nil) ⇒ Object
Deprecated methods
144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/bundler/dsl.rb', line 144 def self.deprecate(name, replacement = nil) define_method(name) do |*| = "'#{name}' has been removed from the Gemfile DSL, " if replacement << "and has been replaced with '#{replacement}'." else << "and is no longer supported." end << "\nSee the README for more information on upgrading from Bundler 0.8." raise DeprecatedError, end end |
Instance Method Details
#env(name) ⇒ Object
135 136 137 138 139 140 |
# File 'lib/bundler/dsl.rb', line 135 def env(name) @env, old = name, @env yield ensure @env = old end |
#gem(name, *args) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# 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 = Hash === args.last ? args.pop : {} version = args || [">= 0"] () (name, version, ) dep = Dependency.new(name, version, ) 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, ) end |
#gemspec(opts = nil) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# 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.(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) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/bundler/dsl.rb', line 99 def git(uri, = {}, = {}, &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().merge("uri" => uri)), , &blk end |
#group(*args, &blk) ⇒ Object
120 121 122 123 124 125 |
# 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) ⇒ Object
95 96 97 |
# File 'lib/bundler/dsl.rb', line 95 def path(path, = {}, = {}, &blk) source Source::Path.new(_normalize_hash().merge("path" => Pathname.new(path))), , &blk end |
#platforms(*platforms) ⇒ Object Also known as: platform
127 128 129 130 131 132 |
# File 'lib/bundler/dsl.rb', line 127 def platforms(*platforms) @platforms.concat platforms yield ensure platforms.each { @platforms.pop } end |
#source(source, options = {}) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/bundler/dsl.rb', line 76 def source(source, = {}) case source when :gemcutter, :rubygems, :rubyforge then rubygems_source "http://rubygems.org" return when String rubygems_source source return end @source = source [:prepend] ? @sources.unshift(@source) : @sources << @source yield if block_given? @source ensure @source = nil end |
#to_definition(lockfile, unlock) ⇒ Object
114 115 116 117 118 |
# File 'lib/bundler/dsl.rb', line 114 def to_definition(lockfile, unlock) @sources << @rubygems_source @sources.uniq! Definition.new(lockfile, @dependencies, @sources, unlock) end |