# File lib/bundler/dsl.rb, line 170 def env(name) @env, old = name, @env yield ensure @env = old end
# File lib/bundler/dsl.rb, line 30 def eval_gemfile(gemfile, contents = nil) contents ||= Bundler.read_file(gemfile.to_s) instance_eval(contents, gemfile.to_s, 1) rescue SyntaxError => e syntax_msg = e.message.gsub("#{gemfile.to_s}:", 'on line ') raise GemfileError, "Gemfile syntax error #{syntax_msg}" rescue ScriptError, RegexpError, NameError, ArgumentError => e e.backtrace[0] = "#{e.backtrace[0]}: #{e.message} (#{e.class})" Bundler.ui.warn e.backtrace.join("\n ") raise GemfileError, "There was an error in your Gemfile," " and Bundler cannot continue." end
# File lib/bundler/dsl.rb, line 68 def gem(name, *args) options = args.last.is_a?(Hash) ? args.pop.dup : {} version = args || [">= 0"] normalize_options(name, version, options) dep = Dependency.new(name, version, options) # if there's already a dependency with this name we try to prefer one if current = @dependencies.find { |d| d.name == dep.name } if current.requirement != dep.requirement if current.type == :development @dependencies.delete current elsif dep.type == :development return else raise GemfileError, "You cannot specify the same gem twice with different version requirements.\n" "You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})" end else Bundler.ui.warn "Your Gemfile lists the gem #{current.name} (#{current.requirement}) more than once.\n" "You should probably keep only one of them.\n" "While it's not a problem now, it could cause errors if you change the version of just one of them later." end if current.source != dep.source if current.type == :development @dependencies.delete current elsif dep.type == :development return else raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" "You specified that #{dep.name} (#{dep.requirement}) should come from " "#{current.source || 'an unspecified source'} and #{dep.source}\n" end end end @dependencies << dep end
# File lib/bundler/dsl.rb, line 43 def gemspec(opts = nil) path = opts && opts[:path] || '.' name = opts && opts[:name] || '{,*}' development_group = opts && opts[:development_group] || :development expanded_path = File.expand_path(path, Bundler.default_gemfile.dirname) gemspecs = Dir[File.join(expanded_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 + [:type => :development]) end end when 0 raise InvalidOption, "There are no gemspecs at #{expanded_path}." else raise InvalidOption, "There are multiple gemspecs at #{expanded_path}. Please use the :name option to specify which one." end end
# File lib/bundler/dsl.rb, line 136 def git(uri, 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 with_source(@sources.add_git_source(normalize_hash(options).merge("uri" => uri)), &blk) end
# File lib/bundler/dsl.rb, line 119 def git_source(name, &block) unless block_given? raise InvalidOption, "You need to pass a block to #git_source" end if valid_keys.include?(name.to_s) raise InvalidOption, "You cannot use #{name} as a git source. It " "is a reserved key. Reserved keys are: #{valid_keys.join(", ")}" end @git_sources[name.to_s] = block end
# File lib/bundler/dsl.rb, line 155 def group(*args, &blk) @groups.concat args yield ensure args.each { @groups.pop } end
# File lib/bundler/dsl.rb, line 177 def method_missing(name, *args) location = caller[0].split(':')[0..1].join(':') raise GemfileError, "Undefined local variable or method `#{name}' for Gemfile\n" " from #{location}" end
# File lib/bundler/dsl.rb, line 132 def path(path, options = {}, &blk) with_source(@sources.add_path_source(normalize_hash(options).merge("path" => Pathname.new(path))), &blk) end
# File lib/bundler/dsl.rb, line 162 def platforms(*platforms) @platforms.concat platforms yield ensure platforms.each { @platforms.pop } end
Generated with the Darkfish Rdoc Generator 2.