class Gem::Specification - bundler-1.15.4 Documentation

# class Gem::Specification

### Attributes

full_gem_path[W]
location[RW]
relative_loaded_from[RW]
remote[RW]
rg_full_gem_path[W]

### Public Instance Methods

extension_dir() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 77
    def extension_dir
      @bundler_extension_dir ||= if source.respond_to?(:extension_dir_name)
        File.expand_path(File.join(extensions_dir, source.extension_dir_name))
      else
        rg_extension_dir
      end
    end

full_gem_path() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 43
    def full_gem_path
      # this cannot check source.is_a?(Bundler::Plugin::API::Source)
      # because that _could_ trip the autoload, and if there are unresolved
      # gems at that time, this method could be called inside another require,
      # thus raising with that constant being undefined. Better to check a method
      if source.respond_to?(:path) || (source.respond_to?(:bundler_plugin_api_source?) && source.bundler_plugin_api_source?)
        Pathname.new(loaded_from).dirname.expand_path(source.root).to_s.untaint
      else
        rg_full_gem_path
      end
    end

gem_dir() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 90
    def gem_dir
      full_gem_path
    end

git_version() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 98
    def git_version
      return unless loaded_from && source.is_a?(Bundler::Source::Git)
      " #{source.revision[0..6]}"
    end

groups() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 94
    def groups
      @groups ||= []
    end

load_paths() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 63
    def load_paths
      return full_require_paths if respond_to?(:full_require_paths)

      require_paths.map do |require_path|
        if require_path.include?(full_gem_path)
          require_path
        else
          File.join(full_gem_path, require_path)
        end
      end
    end

loaded_from() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 55
    def loaded_from
      if relative_loaded_from
        source.path.join(relative_loaded_from).to_s
      else
        rg_loaded_from
      end
    end

Also aliased as: rg_loaded_from
nondevelopment_dependencies() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 113
    def nondevelopment_dependencies
      dependencies - development_dependencies
    end

rg_loaded_from()
Alias for: loaded_from
source() click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 31
    def source
      (defined?(@source) && @source) || Gem::Source::Installed.new
    end

to_gemfile(path = nil) click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 103
    def to_gemfile(path = nil)
      gemfile = String.new("source 'https://rubygems.org'\n")
      gemfile << dependencies_to_gemfile(nondevelopment_dependencies)
      unless development_dependencies.empty?
        gemfile << "\n"
        gemfile << dependencies_to_gemfile(development_dependencies, :development)
      end
      gemfile
    end

### Private Instance Methods

dependencies_to_gemfile(dependencies, group = nil) click to toggle source

    # File lib/bundler/rubygems_ext.rb, line 119
    def dependencies_to_gemfile(dependencies, group = nil)
      gemfile = String.new
      if dependencies.any?
        gemfile << "group :#{group} do\n" if group
        dependencies.each do |dependency|
          gemfile << "  " if group
          gemfile << %Q(gem "#{dependency.name}")
          req = dependency.requirements_list.first
          gemfile << %Q(, "#{req}") if req
          gemfile << "\n"
        end
        gemfile << "end\n" if group
      end
      gemfile
    end